Signature Series
MADDY
8 HPAll-in-one rhythm workstation combining internal swing clock, 3-track Euclidean sequencer, and pattern-based CV generation with custom pattern support
Features
- Internal swing clock generator
- 3-track Euclidean rhythm engine
- 5-step CV sequencer with Custom mode
- Clock division per track
- Custom pattern via context menu
Overview
All-in-one rhythm workstation combining internal swing clock, 3-track Euclidean sequencer with per-track envelope generation, and a 5-stage CV sequencer with custom pattern support. Features chain outputs for layered triggers and flexible clock division per track.
Signal Flow
[Clock Source] → [Swing Processing] → [Per-Track Division] → [Euclidean Pattern] → [Envelope Generator] → Trigger Outputs. CV sequencer advances on CHAIN 123 triggers or dedicated clock.
Euclidean Rhythm
- Principle: Distributes hits as evenly as possible across the pattern length
- FILL: Determines how many hits in the pattern. Higher fill = more hits.
- SHIFT: Rotates the pattern start point without changing rhythm density
- Recalculation: Pattern updates immediately when FILL, LEN, or SHIFT changes
Clock Section
- BPM: Internal tempo from 20 to 300 BPM
- SWING: Adds groove by delaying every other beat (0-100%). Higher values create stronger shuffle feel.
- RESET IN: Trigger input that resets all tracks to step 1
- CLK SRC Button: Selects what advances the CV sequencer: internal clock, individual track triggers, or chain outputs
Per-Track Controls (BD, SN, HH)
- FILL: Rhythm density (0.0-1.0). At 0.5 with length 16, generates 8 evenly-spaced hits.
- SHIFT: Pattern rotation (0 to length-1 steps). Rotates pattern without changing density.
- DIV: Clock division factor. Options: /1, /2, /4, /8. Slows track relative to master clock.
- LEN: Pattern length (1-32 steps). Longer patterns create more complex rhythms.
Envelope Generator (per track)
- Type: AD (Attack-Decay) envelope triggered on each hit
- Attack Time: Configurable via right-click menu (0.5-20ms, default: 1ms)
- Decay Time: Fixed ratio to attack (approximately 10× attack time)
- Output Voltage: 0V to 10V unipolar envelope
- Retrigger: New trigger restarts envelope from current position
CV Sequencer
- K1-K5: Five knobs defining preset voltage values. Range: -10V to +10V (default: 0V).
- DENSITY: Controls how many knobs are visible/active (2-5 knobs based on 0-100% range)
- LENGTH: Controls sequence length (1-48 steps). The CV sequencer follows the custom pattern, wrapping at this length.
- Clock Source: Advances on CHAIN 123 output triggers by default
CV Sequencer Modes
- Sequential: Steps through K1→K2→K3→K4→K5 in order, wrapping at LENGTH
- Custom: Follows a user-defined pattern set via the right-click menu. Default is a 32-step phasing pattern creating Steve Reich-style sequences. Enter patterns like "12312345" where numbers 1-5 represent K1-K5 knobs.
- Jump: Follows a fixed 5-step pattern cycling K1→K3→K5→K2→K4, creating non-sequential melodic intervals.
CHAOS Parameter
- Range: 0.0 to 1.0 (default: 0.0)
- Step Randomization: Randomly replaces steps with different K knob values. Higher chaos = more random steps.
- Out-of-Range Selection (>50%): When CHAOS exceeds 50%, random steps may select knobs outside the DENSITY range (e.g., K4/K5 even when DENSITY only shows K1-K3)
- Effect: Applies uniformly to all modes (Sequential, Custom, Jump)
Chain Outputs
- CHAIN 12: Outputs trigger when BD OR SN fires (logical OR of tracks 1-2)
- CHAIN 23: Outputs trigger when SN OR HH fires (logical OR of tracks 2-3)
- CHAIN 123: Outputs trigger when ANY track fires (logical OR of all 3 tracks)
- Use Case: CHAIN 123 provides composite rhythm for driving the CV sequencer or external modules
Outputs
- CLK: Master clock output (post-swing, pre-division)
- BD: Track 1 envelope output (0-10V)
- SN: Track 2 envelope output (0-10V)
- HH: Track 3 envelope output (0-10V)
- CHAIN 12: Combined BD+SN trigger (0-10V)
- CHAIN 23: Combined SN+HH trigger (0-10V)
- CHAIN 123: Combined all tracks trigger (0-10V)
- CV: CV sequencer pitch output (-10V to +10V)
- TRIG: CV sequencer gate/trigger output (0-10V)
Technical Specifications
- Internal clock: 20-300 BPM with swing
- Reset input: Rising edge detection at 1.0V threshold
- Pattern length: 1-32 steps per track
- CV sequencer length: 1-48 steps
- Clock division: /1, /2, /4, /8 per track
- Trigger output: 10V, 1ms pulse width
- Envelope output: 0-10V unipolar
- CV output: -10V to +10V
- Processing: 32-bit floating point
- Module width: 8HP
Right-Click Menu
- Custom Pattern: Define the knob sequence for Custom mode. Enter a string of digits 1-5 (e.g., "12312345"). Each digit selects which K knob to use at that step.
- Attack Time: Per-module envelope attack time (0.5-20ms). Affects all three tracks.
- Track 1 Shift: Additional shift offset for BD track (0-4 steps)
- Track 2 Shift: Additional shift offset for SN track (0-4 steps)
- Track 3 Shift: Additional shift offset for HH track (0-4 steps)
MADDY+
12 HPExtended MADDY with three independent CV sequencers featuring custom pattern support via context menu
Features
- Three independent CV sequencers
- 5 voltage knobs per sequence
- Sequential, Custom, Jump modes
- Density and Chaos controls
- Custom pattern via context menu
Overview
Advanced multi-channel sequencer combining swing clock generation, 3-track Euclidean rhythm generator, and three independent pattern-based CV sequencers. Extended version of MADDY with additional CV channels and chain sequencing capabilities.
Clock System
- Frequency: Wide range from very slow (0.125Hz) to very fast (128Hz). Uses exponential scaling for musical response.
- Default: Approximately 7Hz, equivalent to 120 BPM when using 4 pulses per beat
- SWING: Adds groove by delaying every other beat (0-100%)
- Clock Sources: 7 selectable modes - internal oscillator or derived from track triggers
Euclidean Rhythm
- Principle: Distributes hits as evenly as possible across the pattern length
- FILL: 0-100%, determines how many hits per pattern. Higher fill = more hits.
- SHIFT: Rotates the pattern start point without changing rhythm density
- LENGTH: 1-32 steps, shared across all three rhythm tracks
Clock Division/Multiplication
- Range: -3 to +3
- Positive values: Speed up the clock (2x, 3x, 4x faster)
- Negative values: Slow down the clock (1/2, 1/3, 1/4 speed)
- Zero: No change (1x speed)
Envelope Generator
- Type: AD (Attack-Decay) envelope triggered on each hit
- Attack Time: Default 6ms, configurable 0.5-20ms via right-click menu
- Decay: Follows a natural-sounding curve that starts fast and slows down
- Phases: Idle → Attack → Decay → Idle
CV Sequencer Parameters
- DENSITY: Controls the number of active K knobs (0%=2 knobs, 100%=5 knobs). DENSITY is not used in Sequential mode.
- LENGTH: Controls the CV sequence length (1-48 steps)
CV Sequencer
- K1-K5: Five voltage knobs defining preset voltage values (-10V to +10V)
- MODE: Sequential, Custom, Jump, and more pattern modes
CV Sequencer Modes
- Sequential: Cycles through K1→K2→K3→K4→K5 in order, using all 5 knobs regardless of DENSITY
- Custom: User-defined knob sequence via right-click menu. Default is a 32-step phasing pattern inspired by Steve Reich's phase music. DENSITY controls active knob count (2-5).
- Jump: Similar to Custom but with a different default pattern
CHAOS Parameter
- 0%: No randomization, pattern plays exactly as defined
- 1-50%: Random step skipping with increasing probability
- >50%: Selects knobs outside the DENSITY range, adding unexpected variations
Additional Channels (CV2, CV3)
- Independent MODE: Each CV channel has its own mode selector
- DELAY: Delays the CV output by 0-8 steps, creating echo and canon effects
- Application: Create harmonies by offsetting CV2/CV3 from the main CV output
Chain Sequencing
- CHAIN 12: Alternates between Track 1 and Track 2 patterns
- CHAIN 23: Alternates between Track 2 and Track 3 patterns
- CHAIN 123: Cycles through all three tracks in sequence
- Cycle Length: Based on pattern length and clock division settings
Technical Specifications
- Module width: 12HP
- Trigger pulse width: 1ms
- Gate width: 50% of clock period (min 1ms)
- CV output range: ±10V
- Envelope output: 0-10V
- CV sequencer length: 1-48 steps
- Processing: 32-bit floating point
Right-Click Menu
- Panel Theme: Light / Dark panel appearance
- Attack Time: Envelope attack time (0.5-20ms)
- Custom Pattern: Define knob sequence for Custom mode. Enter a string of numbers 1-5 (e.g., "12312345"). Each number selects which K knob to use for that step.
NIGOQ
12 HPBuchla-inspired complex oscillator with parallel modulation architecture, waveshaping, and integrated AD envelope
Features
- Complex oscillator architecture (MOD + FINAL)
- Through-zero FM, wavefolding, rectification
- MOD controls FM, TM, and RECT simultaneously
- Integrated AD envelope with drone mode
- Dual-track oscilloscope display
Overview
NIGOQ is a complex oscillator inspired by Buchla designs. It features two oscillators working in parallel: MOD (modulation source) and FINAL (carrier/main voice). The MOD oscillator provides modulation signals that shape the FINAL oscillator's timbre through FM, wavefolding, and rectification. An integrated AD envelope makes it a self-contained synthesizer voice.
Architecture
Unlike traditional signal chains, NIGOQ uses a parallel modulation architecture:
- MOD Oscillator: Runs independently and provides modulation signals
- FINAL Signal Path: FINAL Oscillator → Wavefolding → Rectification → LPF → VCA → Output
- Modulation Routing: MOD simultaneously controls FM amount, TM (timbre/fold depth), and RECT modulation
- SYNC: When enabled, MOD oscillator resets its phase when FINAL completes a cycle, locking MOD to FINAL's frequency for harmonic timbres
- BASS: Adds unprocessed sine wave from FINAL to the output for low-end weight
MOD Oscillator
- MOD FREQ: Frequency from 0.001Hz (slow LFO) to 6kHz (audio rate). Use as LFO for evolving textures or at audio rate for FM timbres.
- WAVE: Smoothly morphs through waveforms. Turn clockwise: Sine → Triangle → Sawtooth → Pulse (wide to narrow).
- MOD 1V/OCT: Pitch tracking input. Connect to play MOD at musical intervals.
- MOD FM IN: External signal to modulate MOD's frequency. Attenuator controls depth.
- EXT MOD IN: Replace internal MOD with any external signal for custom modulation sources.
FINAL Oscillator
- FINAL FREQ: Main pitch from 20Hz to 8kHz. Default is A2 (~110Hz).
- FINAL 1V/OCT: Primary pitch input for playing melodies.
- FINAL FM IN: External FM source with attenuator. Independent from internal MOD→FINAL FM.
- EXT FINAL IN: Replace internal FINAL with external audio. Useful for processing other sound sources through the waveshaping chain.
- SYNC: Off = independent oscillators. Soft = gentle phase correction. Hard = full phase reset. Sync locks MOD to FINAL's cycle.
FM Section
- FM: Controls how much MOD affects FINAL's pitch. Through-zero FM allows the frequency to go negative, creating the characteristic metallic, bell-like timbres of FM synthesis.
- FM CV: External control of FM depth with attenuator.
Waveshaping Section
- FOLD: Wavefolding adds harmonics by "folding" the waveform back on itself when it exceeds a threshold. Higher settings create increasingly complex, buzzy overtones.
- TM (Timbre Modulation): MOD signal dynamically controls the fold amount. Creates evolving, animated timbres as MOD sweeps the fold depth.
- RECTIFY: Asymmetric rectification progressively removes negative portions of the waveform. At 50%, negative values are halved. At 100%, full half-wave rectification. Adds odd harmonics and changes the tonal character. Automatic DC blocking prevents speaker damage.
Filter & Output
- LPF: 12dB/octave lowpass filter. Range 10Hz to 20kHz. Tames harsh harmonics from waveshaping or creates muffled textures.
- LPF CV: External cutoff control for filter sweeps.
- BASS: Blends clean sine wave (at FINAL's pitch) into the output. Adds fundamental weight underneath complex harmonics. Soft saturation prevents harsh clipping.
Envelope
- DECAY: AD envelope with fixed 10ms attack for punchy transients. First half of knob: short decays (0-300ms). Second half: longer decays (300ms-3s). At maximum: Drone mode keeps the envelope fully open.
- TRIG: Trigger input. Any signal crossing the threshold starts the envelope. Retriggerable for repeated notes.
Outputs
- MOD: Raw modulation oscillator output (0-10V). Useful for modulating other modules.
- SINE: Clean sine wave at FINAL's pitch (±5V). Unaffected by waveshaping.
- FINAL: Main output with all processing applied (±5V).
- All outputs pass through the envelope VCA.
Oscilloscope Display
- Top trace: MOD oscillator waveform
- Bottom trace: FINAL output waveform
- Helps visualize how MOD shapes the FINAL output in real-time
Technical Specifications
- MOD frequency: 0.001Hz - 6kHz
- FINAL frequency: 20Hz - 8kHz
- LPF cutoff: 10Hz - 20kHz, 12dB/octave
- Envelope: 10ms attack, 0-3s decay, drone mode
- Oversampling: 2x (default) for reduced aliasing
- Module width: 12HP
Right-Click Menu
- Panel Theme: Light / Dark panel appearance
- 2x Oversample: Toggle oversampling. ON reduces aliasing, OFF saves CPU.
- Randomize Amount: How much parameters change when randomizing (0-100%).
- Randomize Glide Time: How smoothly parameters morph during randomization.
- Exclude FINAL_FREQ from Random: Preserve pitch when randomizing (default: ON).
- Exclude DECAY from Random: Preserve envelope time when randomizing.
weiii documenta
12 HP8-layer sampler emulating analog no-input mixer feedback with real-time transient slicing, 3-band EQ, and chaotic parameter morphing
Features
- 8-layer recording sampler
- Real-time transient slicing
- Chaotic parameter morphing
- 3-band EQ processing
- Polyphonic playback up to 8 voices
Overview
Recording sampler with chaotic parameter morphing, feedback matrix, and slice engine. Combines real-time recording with automatic transient detection, polyphonic playback, 3-band EQ, sample and hold modulation, and parameter morphing. Maximum recording time: 60 seconds at 48kHz. Designed for experimental sound design and live performance.
Recording and Slicing
- REC: Toggle recording. Clears existing slices on start.
- Transient Detection: Triggers new slice when amplitude crosses threshold from below
- THRESHOLD: Detection threshold (0-10V, default 1V). Adjusting while not recording rescans existing buffer.
- MIN SLICE: Minimum time between slices (0.001-1.0s, default 0.05s)
- Slice Storage: Dynamic std::vector (unlimited slices). Each slice stores startSample, endSample, peakAmplitude.
Speed Control
- Non-linear Mapping: Knob 0-1 maps to -8x to +8x with 1x at center
- 0-25%: Reverse playback from -8x to 0
- 25-50%: Forward playback from 0 to 1x
- 50-100%: Forward playback from 1x to 8x
- Linear Interpolation: Sub-sample accuracy using playbackPhase for smooth playback at all speeds
Polyphonic Voice System
- POLY: 1-8 voices (integer snap, CV modulatable)
- Voice Structure: Each voice has independent sliceIndex, playbackPosition, playbackPhase, speedMultiplier
- Speed Variation: Voices 1-7 get random speedMultiplier (0.5-2.0x)
- Slice Switching: Voices randomly switch slices based on sliceChangeTimer (0.5-2.0s intervals)
- Mix Output: Multi-voice output divided by numVoices to prevent clipping
Slice Crossfade
- Fade Time: 0.1ms (SLICE_FADE_TIME_MS constant)
- Fade Increment: Calculated from fade time and sample rate
- Pending Slice: New slice stored in pendingSliceIndex during fade-out, applied after envelope reaches 0
- Maximum Oscillator Frequency: ~5kHz (limited by 0.1ms fade envelope)
Parameter Smoothing
- Exponential Filter: Smoothly interpolates toward target with 0.5% step per sample
- Time Constant: ~5ms at 44.1kHz
- Smoothed Parameters: Scan, Threshold, LoopEnd, FeedbackAmount, FeedbackDelay
Feedback System
- No-Input Feedback: Output feeds back to input with analog-style saturation
- Saturation: Applies tanh soft-clipping scaled for unity gain at low levels
- Mix: Feedback signal added to output scaled by feedback amount
Morph System
- States: IDLE, MORPHING, HOLDING, RETURNING
- Curves: Linear, Smooth (S-curve easing), Exponential (fast attack, slow decay), Bezier (cubic)
- Default Targets: EQ, Scan, Feedback, Speed enabled. Threshold, MinSlice, S&H disabled.
- Morph Time: 1-20 seconds (configurable via right-click)
EQ Section
- Low: 80Hz shelf (Allen & Heath reference)
- Mid: 2.5kHz peak
- High: 12kHz shelf
- Range: ±12dB per band
- Implementation: TBiquadFilter (IIR)
Sample & Hold
- Rate: Logarithmic mapping, range 0.01-100Hz (center = 1Hz)
- Slew: 0-1 second slew time
- Amount: 0-5x gain multiplier
- Output: ±10V CV output
Technical Specifications
- Module width: 12HP
- Buffer size: 60 seconds at 48kHz (2,880,000 samples per channel)
- I/O range: ±10V with hard clamp
- EQ implementation: Biquad IIR filters
- Slice storage: Dynamic vector (unlimited)
- Random engine: std::default_random_engine with time-based seed
- State persistence: Buffer, slices, all parameters saved to JSON
Universal Rhythm
40 HPCross-cultural rhythm generator featuring 10 world music styles, 4 rhythmic roles per style, and 8-voice polyphonic drum synthesis with per-role density and humanize controls
Features
- 10 world music rhythm styles
- 4 rhythmic roles per style
- 8-voice polyphonic drum synthesis
- Per-role density and humanize
- Real-time pattern variation
Overview
Cross-cultural rhythm generator with 10 world music styles and 8-voice integrated drum synthesis. Uses multiple specialized engines: PatternGenerator, HumanizeEngine, RestEngine, FillGenerator, ArticulationEngine, KotekanEngine (Balinese interlocking), LlamadaEngine (Afro-Cuban call-response), CrossRhythmEngine, AsymmetricGroupingEngine, and AmenBreakEngine.
Styles and Frequency Ranges
- West African: Gankogui 4.5kHz, Dununba 80Hz, Djembe 400-700Hz
- Afro-Cuban: Clave 4kHz, Tumba 100Hz, Congas 350-550Hz, Timbales 3kHz
- Brazilian: Agogô 3-4.5kHz, Surdo 55-80Hz, Tamborim 400Hz, Caixa 500Hz
- Balkan: Rim 4kHz, Tapan 90-130Hz, Tarabuka 300-450Hz
- Indian: Manjira 6-8kHz, Baya 65-90Hz, Daya 350-500Hz
- Gamelan: Kenong 600-700Hz, Gong 90Hz, Bonang 800-1kHz, Gender 1.2kHz
- Jazz: Ride 2.5-4.5kHz, Kick 50-80Hz, Snare 400-500Hz, HiHat 6-8kHz
- Electronic: HiHat 9-12kHz, 808 Kick 45-60Hz, Clap 1.5-2.5kHz
- Breakbeat: HiHat 8-10kHz, Kick 55-70Hz, Snare 2-2.5kHz
- Techno: HiHat 10-12kHz, 909 Kick 42-55Hz, Clap 1.8kHz, Rim 3kHz
4-Role System (2 voices each)
- Timeline (Voices 0-1): Time-keeping layer, typically 3-6kHz bells/hi-hats
- Foundation (Voices 2-3): Bass layer at 40-150Hz (kick, low drums)
- Groove (Voices 4-5): Mid-range 250-700Hz (snare, clap patterns)
- Lead (Voices 6-7): High-frequency embellishments and accents
Per-Role Controls
- STYLE: Rhythm style (0-9, snapped to integers)
- DENSITY: Pattern density. Foundation default 20%, Timeline 40%, others 50%
- LENGTH: Pattern length (4-32 steps, integer snap)
- FREQ: Frequency modifier (-1 to +1 octave). CV: ±1V = ±0.2 octave
- DECAY: Decay multiplier (0.2x to 2.0x)
- MIX: Internal synth (0%) to external audio (100%)
External Audio VCA
- Velocity Response: External audio volume responds to hit velocity with natural-feeling dynamics
- Decay Behavior: Envelope decays faster for louder hits, matching acoustic drum behavior
- Application: Use external audio inputs to layer samples or external synth sounds with the rhythm patterns
Global Parameters
- VAR: Pattern variation (default 30%)
- HUM: Humanize timing/velocity (default 50%)
- SWG: Swing amount (default 50%)
- RST: Rest probability with CV input
- FILL: Combined probability + intensity (default 30%)
- SPREAD: Stereo spread (default 50%)
Articulation System
- Types: Normal, Ghost, Accent, Rim, Flam, Drag, Buzz, Ruff
- Flam/Drag: Implemented via DelayedTrigger struct with sample-accurate timing
- Groove Templates: Auto, Straight, Swing, African, Latin, LaidBack, Pushed
- Fill Types: Pre-determined at bar start, triggered at fillStartStep
Clock and Timing
- PPQN Settings: 1 (quarter), 2 (8th), or 4 (16th note) pulses per quarter
- Per-Role Steps: Each role maintains independent step counter
- Global Step: Shared counter for bar tracking and fill synchronization
Outputs
- MIX L/R: Stereo sum of all voices with spread
- Per-Voice Audio: Individual voice audio outputs
- Per-Voice Gate: Trigger outputs via PulseGenerator
- Per-Voice Pitch CV: 1V/Oct, C4=0V, derived from currentFreqs array
- Per-Voice Velocity: Velocity CV (0-10V)
Technical Specifications
- Module width: 40HP
- Voice count: 8 (2 per role)
- Synth modes: SINE (pitched), NOISE (unpitched)
- Pattern storage: MultiVoicePatterns with 16-step default
- Decay range: 12-800ms depending on preset
- Processing: 32-bit floating point
Drum Machines
TWNC
8 HPDual-track Euclidean drum machine with built-in FM synthesis and accent system
Features
- Dual-track Euclidean drum machine
- Built-in FM drum synthesis
- Quarter-note accent system
- 3x oversampling with anti-aliasing
Overview
Dual-track Euclidean rhythm generator with built-in drum and hi-hat synthesis. Combines rhythm pattern generation with envelope generators and CV modulation. Uses 3x oversampling with 6-stage SOS anti-aliasing filter for clean audio output.
Signal Flow
Clock → [Euclidean Pattern Generator] → [Track Envelope] × [Main VCA Envelope] → [Oscillator with FM] → Audio Output. Each track has independent Bjorklund-distributed patterns that trigger dedicated synthesis engines.
Euclidean Rhythm
- Distribution: Bjorklund algorithm distributes hits as evenly as possible across the pattern length
- Rotation: Pattern shift for offset control
- Length: 1-32 steps (default: 32)
- Fill: 0-100% converted to integer step count
Track 1 (Drum) Synthesis
- FILL: Active steps percentage (0-100%, default: 84.5%)
- FREQ: Oscillator frequency (20Hz-20kHz logarithmic, default: ~36.7Hz)
- FM: FM amount (0-1, default: 0.65). Envelope modulates pitch exponentially for classic FM drum character
- NOISE: Pink/blue noise mix (0-1, default: 0.152). Blue noise is derived from pink noise via differentiation
- ACCENT: Quarter-note VCA shift (1-7 steps, default: 1)
- DELAY: Main VCA decay time (0.01-2s, default: 0.396s)
- DECAY: Track envelope decay (0.01-2s, default: 0.720s)
- SHAPE: Envelope curve (0-0.99, default: 0)
Track 2 (HATs) Synthesis
- SHIFT: Pattern rotation offset (0-7 steps, default: 2)
- FILL: Active steps percentage (0-100%, default: 25%)
- D/M: Clock div/mult - 0:1/2x, 1:1x, 2:1.5x, 3:2x, 4:3x (default: 1x)
- NOISE: Noise FM modulation (0-1, default: 0.714). Pink when <0.5, blue when ≥0.5
- FREQ: Hi-hat frequency (20Hz-20kHz, default: ~20kHz)
- DECAY: Envelope decay (0.01-2s, default: 0.131s)
- SHAPE: Envelope curve (0-0.99, default: 0.055)
Envelope Behavior
- Attack: Fixed 1ms linear ramp
- Decay: Variable S-curve with smoothstep transition for natural-sounding decay
- Shape Control: Adjusts the curvature of both attack and decay segments
- Transition: Smooth blending between front and back envelope curves for percussive character
Oversampling Implementation
- Factor: 3x oversampling
- Filter: 6-stage cascaded Second-Order Sections (SOS)
- Coefficients: Pre-computed for 48kHz × 3 operation
- Processing: Separate up/down filters for clean aliasing rejection
Pink Noise Generator
- Algorithm: Voss-McCartney with 6 quality stages
- Frame counting: XOR-based bit detection for efficient computation
- Normalization: Scaled to appropriate output level for mixing with oscillator signal
Inputs
- CLK: Global clock (Schmitt trigger)
- RESET: Reset sequence to step 0
- D.F: Drum frequency CV (±10V, 1V/oct)
- D.D: Drum decay CV (±10V, scaled /10)
- H.F: Hats frequency CV (±10V, 1V/oct)
- H.D: Hats decay CV (±10V, scaled /10)
Outputs
- TRACK 1: Drum audio (scaled by envelope × mainVCA × 1.4)
- TRACK 2: Hi-hat audio (scaled by envelope × 0.7)
- VCA ENV: Main accent envelope (0-10V)
- DRUM FM ENV: Track 1 FM envelope (0-10V)
- HATS VCA ENV: Track 2 VCA envelope (0-10V)
Technical Specifications
- Input: ±10V (CV), Schmitt trigger with 0.1V/2V thresholds
- Audio output: ±5V nominal
- Envelope output: 0-10V unipolar
- Processing: 32-bit floating point
- Oversampling: 3x with 6-stage SOS anti-aliasing
- Clock range: 0.01-10 seconds per step
- Module width: 8HP
TWNC 2
8 HPThree-track drum voice module with BD/SN/HH synthesis, 10-bit quantization, and sidechain ducking
Features
- Three-track BD/SN/HH synthesis
- Envelope-driven (requires external triggers)
- Sidechain ducking system
- 10-bit vintage quantization
- Stereo mix with HH delay spread
Overview
Envelope-driven drum voice module with BD/SN/HH synthesis engines. Requires external envelope/trigger inputs (from TWNC or other modules). Features 10-bit quantization for vintage lo-fi character and sidechain ducking.
Signal Flow
Envelope CV → [Synthesis Engine] → [10-bit Quantizer] → [Soft Limiter] → Output. Each drum voice has dedicated synthesis and independent output, plus stereo mix with hi-hat delay spread.
Bass Drum (BD) Synthesis
- VOL: Output volume (0-1, default: 1.0)
- ENV: Envelope CV input (0-10V). VCA uses square root response for punchy character
- [ACCNT]: Accent CV input (0-10V). Also drives sidechain ducking
- TUNE: Frequency (24-500Hz logarithmic, default: ~24Hz)
- FM: FM amount (0-1, default: 0.157). Internally scaled 20x. Envelope squared for pitch sweep
- PUNCH: Saturation amount (0-1, default: 0.168). Soft-clipping saturation for warm distortion
- CV inputs: TUNE CV, FM CV, PUNCH CV (all ±10V, scaled /10)
Snare Drum (SN) Synthesis
- VOL: Output volume (0-1, default: 1.0)
- ENV: Envelope CV input (0-10V). VCA uses square root response
- TUNE: Body frequency (100-300Hz logarithmic, default: ~120Hz)
- N.BPF: Noise filter tone (0-1, default: 0.717). Filter frequency tracks body frequency and envelope
- N.MIX: Body/noise crossfade (0-1, default: 0.288). CV modulation available
- Body: Sine oscillator at 75% amplitude
- Noise: White noise through 2-pole biquad bandpass, 4x gain boost
Bandpass Filter Behavior
- Type: 2-pole biquad bandpass with optional 3rd pole for high Q
- Q behavior: At high Q values, additional filtering stage blends in for sharper resonance
- Frequency range: 20Hz to 45% of sample rate
Hi-Hat (HH) Synthesis
- VOL: Output volume (0-1, default: 1.0)
- ENV: Envelope CV input (0-10V)
- TONE: Base frequency (0-1, default: 0.965). Range: 1000-5500 Hz
- DECAY: Envelope decay shape (0-1). Higher values add noise component
- VCA curve: Variable attack sharpness controlled by decay parameter
- Engine: 6 detuned triangle oscillators (FM synthesis approach)
- Frequency offsets: +100, +250, +400, +550, +600, +1000 Hz from base
10-bit Quantization
- Resolution: 1024 levels (10-bit)
- Behavior: Signal rounded to discrete amplitude levels
- Applied to: BD, SN, HH individual outputs and mix
- Character: Adds subtle lo-fi grit reminiscent of vintage samplers
Sidechain Ducking
- [DUCK]: Ducking amount (0-1, default: 0)
- Source: Kick accent CV input
- Behavior: Kick accent attenuates other signals based on duck amount
- Affects: Snare (full ducking), external input (full ducking), hi-hat (reduced ducking)
Stereo Delay
- Max delay: 1440 samples (~30ms @ 48kHz)
- HH spread: Fixed 20ms delay on right channel
- Implementation: Circular buffer delay line
Soft Limiter
- Threshold: ±5V
- Behavior: Smooth saturation above threshold for warm limiting
- Applied to: L/R mix outputs only
Outputs
- BD: Bass drum (10-bit quantized)
- SN: Snare drum (10-bit quantized)
- HH: Hi-hat (10-bit quantized)
- L: Mix with HH direct
- R: Mix with HH delayed 20ms
Technical Specifications
- Envelope input: 0-10V (normalized to 0-1)
- CV input: ±10V (scaled /10)
- Audio output: ±5V nominal (soft limited)
- Quantization: 10-bit (1024 levels)
- Processing: 32-bit floating point
- Module width: 8HP
Companion Module
- TWNC: Provides Euclidean rhythm envelopes via VCA ENV, DRUM FM ENV, HATS VCA ENV outputs
- TWNC Light: Provides envelope outputs in 4HP form factor
TWNC Light
4 HPStreamlined dual-track Euclidean rhythm generator with envelope outputs, ideal for minimal setups
Features
- Dual-track Euclidean generator
- Envelope outputs (no synthesis)
- Quarter-note accent system
- 4HP compact design
- Ideal for external sound sources
Overview
Compact 4HP envelope generator with dual-track Euclidean rhythm engine. Outputs envelope CV signals only (no audio synthesis). Designed to drive TWNC 2 or other sound sources.
Signal Flow
Clock → [Euclidean Pattern Generator] → [Envelope Generator] → CV Output. Track 2 has additional clock division/multiplication before pattern generation. Accent system provides separate quarter-note envelope.
Euclidean Algorithm
- Distribution: Bjorklund via floor-based spacing, evenly distributing fills across pattern length
- Auto-reset: Sequence resets every 32 clock pulses
- Length: 1-32 steps (default: 16)
Global Controls
- CLK: Clock input (Schmitt trigger, 0.1V low / 2V high threshold)
- LEN: Sequence length (1-32 steps, default: 16, snap)
Drum Track (Track 1)
- FILL: Rhythm density (0-100%, default: 66.6%)
- ACCNT: Quarter-note accent shift (1-7 steps, default: 1). Triggers main VCA envelope
- A.DEC: Accent envelope decay (0.01-2s, default: 0.549s)
- DECAY: Track 1 envelope decay (0.01-2s, default: 0.3s)
- SHAPE: Envelope curve (0-0.99, default: 0.5)
- D.D: Decay CV input (±10V, scaled /10)
HATs Track (Track 2)
- FILL: Rhythm density (0-100%, default: 100%)
- SHIFT: Clock delay from accent (1-4 steps, default: 3). Delays HATs start relative to accent
- D/M: Clock div/mult (-3 to +3, default: -3 = 1/4x)
- Div/mult values: -3:1/4x, -2:1/3x, -1:1/2x, 0:1x, +1:2x, +2:3x, +3:4x
- DECAY: Envelope decay (0.01-2s, default: 0.094s)
- SHAPE: Envelope curve (0-0.99, default: 0.5)
- H.D: Decay CV input (±10V, scaled /10)
Envelope Algorithm
- Attack: Fixed 1ms linear ramp
- Decay: Variable S-curve with smoothstep transition (same as TWNC)
- Shape calculation: frontK ranges -0.9 to -0.4, backK ranges -1.0 to 0.6 based on shape parameter
- Output formula: Weighted interpolation producing S-curve decay characteristic
- Trigger pulse: 30ms pulse for retriggering
Clock Division/Multiplication
- Division: Counts input clocks, triggers on Nth
- Multiplication: Generates N triggers per input clock period
- Gate width: 50% of multiplied clock period (minimum 1ms)
- Combined: Division applied first, then multiplication
HATs Delay System
- SHIFT parameter: Delays HATs track start by N clock pulses after accent trigger
- Behavior: When SHIFT=1, HATs starts immediately with accent. When SHIFT>1, waits SHIFT-1 clocks
- Reset: Delay counter resets when SHIFT parameter changes
Outputs
- ENVs (top): Main accent VCA envelope (0-10V)
- ENVs (bottom-left): Track 1 FM envelope (0-10V)
- ENVs (bottom-right): Track 2 VCA envelope (0-10V)
Technical Specifications
- Clock input: Schmitt trigger (0.1V/2V thresholds)
- CV input: ±10V (scaled /10)
- Envelope output: 0-10V unipolar
- Attack time: 1ms (fixed)
- Decay range: 0.01-2 seconds
- Clock period: 0.01-10 seconds
- Processing: 32-bit floating point
- Module width: 4HP
Companion Module
- TWNC 2: Receives envelope outputs to drive BD/SN/HH synthesis
- Usage: Connect ENVs outputs to TWNC 2 ENV inputs for complete drum machine
KIMO
4 HPSingle-track kick synthesizer with FM modulation, randomized parameter variation per trigger, and LPG-style decay
Features
- Single-track kick synthesizer
- Euclidean rhythm generator
- FM modulation with adjustable depth
- Quarter-note accent system
- LPG-style decay envelope
Overview
Single-track kick drum synthesizer combining Euclidean rhythm generation with sine wave oscillator, FM pitch sweep, and tanh saturation. Features a quarter-note accent system that creates groove variation on a separate clock division. The synthesis engine uses three envelope stages: VCA amplitude, FM pitch modulation, and accent intensity.
Signal Flow
Clock → Euclidean Pattern → [Trigger VCA + FM + Accent Envelopes] → Sine VCO (with FM) → tanh Saturation → VCA → Output. The accent envelope modulates VCA gain on quarter-note boundaries.
Euclidean Rhythm Engine
- Pattern Length: Fixed 16 steps
- Fill Calculation: Fill percentage converted to 0-16 hit count
- Hit Distribution: Bjorklund algorithm distributes hits evenly across pattern length
- Step Counter: Increments on each clock rising edge (2.0V threshold)
- Pattern Wrap: Returns to step 0 after step 15
Accent System
- Accent Clock: Triggers every 4 steps (quarter-note in 16th-note pattern)
- Shift Range: 1-7 steps offset from downbeat
- Accent Trigger: Fires when step plus shift value is divisible by 4
- Accent Envelope: LinearEnvelope class with separate decay time
- Gain Modulation: Accent envelope multiplies final VCA output for dynamic emphasis
Synthesis Engine
- Oscillator: BasicSineVCO class generating pure sine wave
- Frequency: Base frequency modulated by FM envelope, up to 20x multiplier at full depth
- FM Envelope: UnifiedEnvelope class, fast attack (1ms), variable decay
- Pitch Sweep: FM envelope creates characteristic kick "thump" by sweeping from high to low frequency
- Saturation: Tanh waveshaping with punch-controlled drive adds harmonics
- At Punch 0: Clean sine output
- At Punch 1: Heavy saturation with odd harmonics
Envelope Classes
- UnifiedEnvelope: S-curve shaped decay with configurable attack (1ms default)
- LinearEnvelope: Simple linear decay for accent (no attack phase)
- VCA Envelope: Controls overall amplitude, uses UnifiedEnvelope
- FM Envelope: Controls pitch sweep depth, uses UnifiedEnvelope
- Accent Envelope: Multiplies VCA output, uses LinearEnvelope
Controls
- CLK: Clock input (2.0V rising edge threshold)
- FILL: Euclidean fill density 0-100% (0-16 hits). CV input adds to knob value.
- ACCENT: Quarter-note shift 1-7 steps. Determines which beat gets accent emphasis.
- DELAY: Accent envelope decay 0.01-2.0s (logarithmic scaling)
- TUNE: Base frequency 24-500Hz. Logarithmic scaling across range. CV input adds ±2 octaves.
- FM: FM depth 0-100%. Higher values create more aggressive pitch sweep.
- PUNCH: Saturation amount 0-100%. Adds harmonic content via tanh waveshaping.
- DECAY: VCA envelope decay 0.01-2.0s (logarithmic). Controls kick body length.
- SHAPE: Envelope curve 0-0.99. Higher values create longer tail with faster initial decay.
Outputs
- VCA ENV: VCA envelope output (0-10V). Use to trigger external modules.
- FM ENV: FM envelope output (0-10V). Useful for modulating other parameters.
- ACCENT ENV: Accent envelope output (0-10V). Quarter-note pulse for groove sync.
- AUDIO: Final kick drum audio (±10V peak)
Technical Specifications
- Pattern length: 16 steps (fixed)
- Clock threshold: 2.0V rising edge
- Frequency range: 24-500 Hz
- FM multiplier: 1x to 21x base frequency
- Saturation: tanh waveshaping (1x to 3x drive)
- Envelope attack: 1ms (fixed)
- Envelope decay: 10ms to 2 seconds
- Output level: ±10V peak
- Processing: 32-bit floating point
- Module width: 4HP
Pinpple
4 HPRipples-inspired percussion synthesizer using band pass filtering with randomized frequency/decay and integrated LPG modulation
Features
- Mutable Ripples-inspired BPF engine
- Randomized frequency per trigger
- FM modulation through LPG
- Pink/Blue noise generators
- Per-trigger parameter randomization
Overview
Ping filter synthesizer based on Mutable Instruments Ripples bandpass filter design. Combines a 4-pole OTA lowpass filter with self-resonance feedback, an LPG-style lowpass gate for FM signal processing, and built-in noise generators. Creates metallic percussion sounds with organic character variations through per-trigger randomization of frequency and decay parameters.
Signal Flow
Trigger → [Generate Ping Impulse] → BPF (self-resonant) → [× VCA Envelope] → Output. FM modulation: Noise/External → LPG → BPF frequency modulation.
BPF Engine (Ripples-Based)
- Architecture: Second-order sections (SOS) IIR filter cascade with 3x oversampling
- Filter Type: 4-pole OTA ladder filter with self-modulation feedback
- Antialiasing: 6-section cascaded SOS filters for up/down conversion
- RC Filter Constants: Based on Ripples hardware (33kΩ cell resistance, 560pF capacitors)
- OTA VCA: Temperature-compensated (40°C nominal) with tanh-based saturation
- Self-Modulation: 0.01 coefficient adds subtle harmonic character
- Integration: Runge-Kutta 2 (RK2) numerical integration for filter state
Noise Generators
- Pink Noise: Voss-McCartney algorithm with 8-octave summation. Normalized by /0.816 factor.
- Blue Noise: Differentiated pink noise (current - previous sample). Normalized by /0.705 factor.
- Noise Gain: Normalized baseline, pink ×0.8, blue ×1.5
- LPG IN MIX: Crossfades Pink (0) → External (0.5) → Blue (1.0)
LPG System
- Trigger Detection: Schmitt trigger on TRIG IN, generates 2ms internal pulse
- LPG Envelope: Attack phase (6ms default) + exponential decay phase
- Decay Range: 10ms to 510ms based on resonance parameter
- Cutoff Sweep: 200Hz to 18.2kHz, envelope-controlled
- Filter Type: Biquad lowpass with Q = 0.707 (Butterworth)
- VCA Amount: FM AMT parameter controls LPG output level into BPF
VCA Envelope
- Attack Time: Configurable 0.5-20ms via right-click menu (default: 6ms)
- Decay: Controlled by DECAY parameter (same as LPG resonance)
- Application: Multiplies final BPF output for amplitude shaping
Randomization System
- Trigger Event: Each trigger generates new random offsets
- Distribution: Gaussian (normal) with σ = 0.00006
- Frequency Offset: Added to FREQ parameter before filter processing
- Decay Offset: Added to DECAY parameter
- Visual Feedback: PinppleRandomizedKnob class displays offset-adjusted position
- Knob Display: Visual offset shows randomization effect on knob position
Controls
- MUTE Button: Toggle output mute with red LED indicator
- VOLUME: Output gain 0-100% (default: 100%)
- FREQ: BPF center frequency 20Hz-20kHz (log scale). Default: 261Hz (C4). CV: 1V/octave with attenuverter.
- DECAY: Envelope decay time 0-100%. Also controls LPG decay. CV input with attenuverter.
- FM AMT: FM modulation depth 0-100%. Controls LPG signal level into BPF. CV input with attenuverter.
- LPG IN MIX: Noise source selection: Pink (left) → External (center) → Blue (right)
Inputs
- TRIG IN: Trigger input for envelope and randomization (Schmitt trigger detection)
- FREQ CV: 1V/octave frequency CV input with attenuverter
- DECAY CV: Decay modulation ±10V with attenuverter
- FM IN: External audio input for FM modulation (replaces noise when LPG IN MIX centered)
- FM AMT CV: FM amount modulation ±10V with attenuverter
Output
- OUTPUT: Main audio output (monophonic). BPF output × VCA envelope × Volume × Mute state.
Technical Specifications
- BPF frequency range: 20Hz - 20kHz
- Oversampling: 3x with 6-section SOS antialiasing
- LPG cutoff range: 200Hz - 18.2kHz (envelope-controlled)
- LPG decay: 10ms - 510ms
- VCA attack: 0.5-20ms (configurable via menu)
- Randomization: Gaussian σ = 0.00006
- Trigger threshold: Schmitt trigger detection
- Processing: 32-bit floating point
- Polyphony: Monophonic
- Module width: 4HP
Right-Click Menu
- VCA Attack Time: Slider to adjust VCA envelope attack (0.5-20ms, default: 6ms)
Rhythm & Envelope
Swing LFO
4 HPDual-phase LFO with adjustable swing groove, morphable waveform shapes, and variable pulse width for rhythmic modulation
Features
- Dual-phase LFO generator
- Swing control 0-90 degrees
- Shape morphing saw/tri/ramp
- Variable pulse width
- Mix blending two phases
Overview
Dual-phase LFO designed for creating swing grooves and complex modulation. Generates two oscillators with configurable phase offset, each with morphable waveshape. The swing parameter delays the second phase, and the mix control blends between them to create timing variations characteristic of swing rhythms in jazz and electronic music.
Signal Flow
Two independent phase accumulators run at the same frequency. The second phase is offset by the swing amount. Each phase generates both SAW and PULSE waveforms, which are then crossfaded using the MIX parameter.
Frequency Control
- Range: 0.125Hz to 128Hz (exponential scaling)
- Default: Approximately 3Hz
- CV: 1V/octave response with attenuverter
Swing Control
- Range: 0.0 to 1.0 (adjusts phase offset from 180° to 90°)
- At 0%: Second phase is 180° behind (opposite phase)
- At 100%: Second phase is 90° behind (quarter cycle)
- Default: Approximately 153°, providing a classic swing feel
- CV: ±10V with attenuverter
Shape Control (SAW Output)
- Range 0.0-0.5: Morphs from falling ramp to triangle
- At 0: Falling ramp waveform
- At 0.5: Triangle waveform
- Range 0.5-1.0: Morphs from triangle to rising sawtooth
- At 1.0: Rising sawtooth waveform
- Transition: Smooth crossfade between shapes
Shape Control (PULSE Output)
- Duty Cycle: Controlled by SHAPE parameter
- At Shape 0: 1% duty cycle (very narrow pulse)
- At Shape 1: 30% duty cycle
- Output: 10V during pulse, 0V otherwise
Mix Control
- Range: 0.0 to 1.0
- At 0: Only main phase output
- At 0.5: Equal blend of both phases
- At 1: Only swing phase output
- Default: 0.384 (slightly favoring main phase)
Reset Input
- Threshold: 2.0V rising edge
- Action: Resets main phase to 0, second phase to calculated offset
- Use Case: Sync to external clock or sequencer for tempo-locked swing
Outputs
- SAW: Shaped waveform (0-10V unipolar). Morphs through falling ramp → triangle → rising saw.
- PULSE: Variable width pulse (0-10V unipolar). Width controlled by SHAPE parameter.
Technical Specifications
- Frequency range: 0.125Hz to 128Hz (exponential 1V/oct)
- Phase offset range: 90° to 180°
- SAW output: 0-10V unipolar
- PULSE output: 0-10V unipolar, 1-30% duty cycle
- CV input range: ±10V (all CV inputs)
- Reset threshold: 2.0V rising edge
- Processing: 32-bit floating point
- Module width: 4HP
Euclidean Rhythm
8 HPThree independent Euclidean rhythm tracks with per-track clock division and chain outputs for sequential switching
Features
- Three independent Euclidean tracks
- Clock division per track
- Pattern rotation offset
- Chain outputs for track switching
- Sync and reset inputs
Overview
Three-track Euclidean rhythm generator with per-track clock division/multiplication, CV modulation, and chain outputs for sequential track switching. Uses the Bjorklund algorithm to distribute beats evenly across sequence length - a mathematical approach that produces patterns found in traditional music from Africa, Latin America, and the Middle East.
Euclidean Rhythm
- Principle: Distributes hits as evenly as possible across the pattern length
- FILL: Determines the number of hits in the pattern. Higher fill = more hits.
- SHIFT: Rotates the pattern starting point without changing rhythm density
- Recalculation: Pattern updates immediately when FILL, LEN, or SHIFT changes
- Example: E(5,8) = [x.x.x.x.] produces the Cuban "cinquillo" pattern
Clock Division/Multiplication
- Range: -3 to +3 (snapped to integers)
- Negative Values: Division. -1 = /2x, -2 = /3x, -3 = /4x
- Positive Values: Multiplication. +1 = 2x, +2 = 3x, +3 = 4x
- Zero: 1:1 ratio (no change)
- Implementation: Tracks elapsed time since last global clock, generates internal triggers at multiplied rate or counts down for division
- Gate Length: 50% of the effective clock period, minimum 1ms
Global Controls
- CLK: Global clock input. Period is measured between rising edges (Schmitt trigger). Valid range: 10ms to 10s.
- RST: Reset input + manual button. Rising edge resets all tracks to step 0 and clears all state.
Per-Track Controls
- LEN: Sequence length (1-32 steps, snapped). Default: 16. CV adds volts × attenuverter to base value.
- FILL: Active steps as percentage (0-100%). Default: T1=100%, T2=50%, T3=25%. CV adds volts × attenuverter × 10.
- SHFT: Pattern rotation (0 to length-1 steps, snapped). Rotates pattern left by shift amount.
- D/M: Clock division/multiplication (-3 to +3). Default: T1=0, T2=+1 (2x), T3=+2 (3x).
- Attenuverters: ±1.0 range for each CV input (Length, Fill, Shift).
Chain Outputs
Chain outputs play tracks sequentially, switching to the next track after the current track completes one full cycle.
- 1+2: Alternates T1 → T2 → T1 → T2...
- 2+3: Alternates T2 → T3 → T2 → T3...
- 1213 (1+2+3): Sequence T1 → T2 → T1 → T3 → repeat. This creates an A-B-A-C pattern.
- Cycle Length: Each track completes one cycle based on its length and clock division/multiplication settings
- LED Indicators: Show which track is currently active in each chain
OR (Master) Output
- Function: Outputs 10V when ANY of the three tracks fires
- RGB LED: Red = T1 active, Green = T2 active, Blue = T3 active (30ms hold)
- Use Case: Composite trigger for driving external modules
Outputs
- OUT 1/2/3: Individual track triggers (0V or 10V, 10ms pulse)
- 1+2: Chain output for tracks 1 and 2
- 2+3: Chain output for tracks 2 and 3
- 1213: Chain output following T1→T2→T1→T3 pattern
- OR: Logical OR of all three track outputs
Technical Specifications
- Clock input: Rising edge at Schmitt trigger threshold
- Clock period range: 10ms to 10s (clamped)
- Pattern length: 1-32 steps per track
- Clock div/mult: /4x to 4x per track
- Trigger pulse width: 10ms
- Trigger voltage: 10V
- CV input range: ±10V
- Processing: 32-bit floating point
- Module width: 8HP
AD Generator
8 HPTriple AD envelope generator with dual processing modes, global parameter controls, and per-track band pass filtering
Features
- Three independent AD envelope tracks
- Trigger mode and Hybrid follower mode
- Global Attack/Decay controls
- Band Pass Filter with frequency and gain
- Independent CV control per track
Overview
Three-track Attack-Decay envelope generator with dual processing modes, designed for both traditional trigger-based operation and advanced audio-following applications. Each track operates independently with its own envelope parameters while sharing global offset controls. The innovative Follower mode enables hybrid processing that responds to both discrete triggers and continuous audio dynamics.
Signal Flow Architecture
Input → [Auto-Route Selection] → [Optional 4-Stage BPF] → [Envelope Generator] → [Gain Stage] → Output. When Follower is enabled, the signal passes through a cascaded bandpass filter before envelope detection. The envelope generator operates in hybrid mode, outputting the maximum of trigger-based and amplitude-following envelopes.
Global Controls
- ATK ALL: Global attack time offset (-1.0 to +1.0). Adds up to ±0.5s offset to all track attack times. Useful for simultaneously shifting all envelopes faster or slower.
- DEC ALL: Global decay time offset (-1.0 to +1.0). Same behavior as ATK ALL but for decay times.
- ROUTE: Auto-route toggle (default: ON). When enabled, Track 1 input is internally routed to all three tracks, allowing single-source multi-band envelope extraction when combined with different BPF frequencies.
Per-Track Envelope Controls
- IN: Trigger or audio input. Accepts both trigger signals (>9.5V threshold) and continuous audio for follower processing.
- ATK: Attack time with exponential scaling. Formula: 10^((param-0.5)*6). At 0%: ~1ms, at 50%: ~1s, at 100%: ~1000s. Default values: Track1=0.002, Track2=0, Track3=0.
- DEC: Decay time with identical exponential scaling. Default: 0.3 for all tracks (~2s actual time).
- CURV: S-curve shaping parameter (-0.99 to +0.99). Negative values create exponential curves (fast attack/slow tail), positive values create logarithmic curves (slow attack/fast tail). Default curves are negative (~-0.75 to -0.83) optimized for percussive sounds. The algorithm uses: output = (x - k*x) / (k - 2*k*|x| + 1)
Follower Mode Controls
- Follower: Toggle between Trigger-only (OFF) and Hybrid (ON) modes. Blue LED indicates active state.
- FREQ: 4-stage cascaded bandpass filter center frequency (20Hz-8kHz). Each stage uses one-pole lowpass/highpass cascade for smooth frequency response. Default frequencies create a multi-band setup: Track1=200Hz (bass), Track2=1kHz (mid), Track3=5kHz (high).
- GAIN: Post-filter output gain (0.1x-100x, default: 3.0x). Compensates for signal level changes after filtering and allows boosting weak frequency bands.
Processing Modes Explained
- Trigger-Only (Follower OFF): Classic AD envelope behavior. Envelope triggers on rising edge when input exceeds 9.5V (Schmitt trigger). Attack phase ramps from 0 to peak, then Decay phase returns to 0. Ignores audio content between triggers.
- Hybrid (Follower ON): Advanced dual-engine processing. Runs BOTH trigger envelope AND amplitude follower simultaneously, outputting the MAXIMUM of both. The follower uses rectified input with configurable attack/release coefficients. This mode excels at extracting dynamics from complex audio while still responding to explicit triggers.
Outputs
- 1, 2, 3: Individual track envelope outputs (0-10V). When Follower is ON, output is multiplied by GAIN setting.
- MIYA (Sum): Mixed output of all three tracks with 0.33x scaling per track to prevent clipping. Final output clamped to 0-10V. Named after the three-eyed character motif.
Creative Applications
- Multi-band Dynamics: Enable Auto-Route, set different BPF frequencies (e.g., 100Hz/800Hz/4kHz), and use outputs to control frequency-specific VCAs or filters.
- Drum Envelope Extraction: Feed a drum loop, enable Follower mode, tune FREQ to isolate kick (low), snare (mid), or hi-hat (high) dynamics.
- Sidechain Ducking: Use individual outputs to modulate other module parameters based on specific frequency content.
- Polyrhythmic Triggers: With Auto-Route OFF, feed different clock divisions to each track for complex envelope patterns.
Technical Specifications
- Input voltage: ±10V (audio/CV), trigger threshold: 9.5V
- Output voltage: 0-10V (unipolar envelope)
- Attack/Decay range: ~1ms to ~1000s (exponential mapping)
- BPF: 4-stage cascaded bandpass, 20Hz-8kHz
- Envelope follower: Attack coeff = 1-exp(-dt/(ATK*0.1)), Release coeff = 1-exp(-dt/(DEC*0.5))
- Processing: 32-bit floating point
- Module width: 8HP
Right-Click Menu
- Panel Theme: Light / Dark panel appearance
Q_Q
4 HPTriple decay envelope generator with adjustable S-curve shaping and real-time 3-track oscilloscope display
Features
- Three decay envelope tracks
- Real-time oscilloscope display
- Adjustable curve shaping
- Individual track triggers
- Visual waveform comparison
Overview
Three-track decay envelope generator with real-time oscilloscope display and S-curve shaping algorithm. Each track features independent trigger, decay time with CV modulation, and curve shaping. The oscilloscope display shows all three envelopes simultaneously with colors matching their input cables.
Signal Flow
Trigger → Attack Phase → Decay Phase → Output. Each track runs independently with its own envelope state machine tracking attack/decay phases and current level.
S-Curve Envelope Algorithm
- Implementation: Uses smoothDecayEnvelope() with dual-k interpolation for natural envelope shapes
- Front K: Controls initial curve steepness, ranging -0.9 to -0.4
- Back K: Controls tail curve, ranging -1.0 to 0.6
- K Crossfade: Linear interpolation from frontK to backK as envelope progresses
- Shape Behavior: Weighted interpolation between target and current, with k varying through decay
- At Shape 0: Linear decay (frontK ≈ -0.9, backK ≈ -1.0)
- At Shape 1: Exponential decay with long tail (frontK ≈ -0.4, backK ≈ 0.6)
Per-Track Controls (T1, T2, T3)
- Trigger Input: Rising edge detection with Schmitt trigger (low: 0.1V, high: 2.0V).
- DECAY Knob: Decay time 0.01-2.0 seconds with exponential scaling
- SHAPE Knob: Envelope curve shape 0 to 0.99. Lower values create faster initial decay, higher values create longer tails with slower initial decay.
- CV Input: Decay time modulation (±10V), additive and scaled by attenuator
- CV Attenuator: Hidden small knob (0-100%) controlling CV depth
Attack Phase
- Attack Time: Configurable 0.5-20ms per track via right-click menu
- Default: 0.5ms (nearly instantaneous)
- Algorithm: Linear ramp from current value (or 0 if not retriggering) to 10V
- Menu Options: 0.5ms, 1ms, 2ms, 5ms, 10ms, 20ms
Retrigger Behavior
- Off (Default): New trigger resets envelope to 0V, then attack phase begins
- On: New trigger starts attack from current envelope value, preventing amplitude discontinuities
- Use Case: Retrigger mode creates smoother overlapping envelopes for fast trigger sequences
Scope Display
- Buffer Size: 128 samples per track (BUFFER_SIZE constant)
- Color Matching: Each waveform adopts the color of its connected input cable via PortWidget API
- Time Scale: Adjustable via hidden time parameter (click and drag on display)
- Y-axis: 0-10V mapped to display height
- Rendering: Anti-aliased line drawing at display refresh rate
Outputs
- 1, 2, 3: Individual track envelope outputs (0-10V unipolar)
- Polyphonic: Each output is monophonic (1 channel)
Technical Specifications
- Trigger input range: ±10V (Schmitt trigger: 0.1V low, 2.0V high)
- CV input range: ±10V
- Output range: 0-10V unipolar
- Attack time: 0.5-20ms (configurable per track)
- Decay time: 10ms to 2 seconds
- Shape range: 0 to 0.99
- Scope buffer: 128 samples per track
- Processing: 32-bit floating point
- Module width: 4HP
Right-Click Menu
- Track 1/2/3 Attack Time: Select attack duration per track (0.5ms, 1ms, 2ms, 5ms, 10ms, 20ms)
- Retrigger: Enable/disable retriggering from current value (global setting)
PPaTTTerning
4 HPMinimalist CV sequencer with 5 voltage knobs, 3 pattern styles including custom pattern support, density control, and integrated shift register delay
Features
- 5 voltage knobs with pattern mapping
- Variable length 8-48 steps
- 3 pattern styles (Sequential/Custom/Jump)
- Custom pattern via context menu
- Dual delay system (shift register + CVD)
Overview
Minimalist CV sequencer with five voltage knobs mapped to sequence steps via three pattern algorithms. Density controls the number of active knobs, chaos adds randomization, and a dual-delay system combines shift register (step-based) and CVD (time-based) for creating polyrhythmic textures.
Signal Flow
Clock → Step Counter → [Knob Mapping via Style] → CV OUT. CV2 receives the same sequence through shift register delay then optional CVD time delay.
Density Parameter
- Range 0.0-0.2: 2 primary knobs (K1-K2)
- Range 0.2-0.4: 3 primary knobs (K1-K3)
- Range 0.4-0.6: 4 primary knobs (K1-K4)
- Range 0.6-1.0: 5 primary knobs (K1-K5)
- High Density Bonus: Above 0.8, additional pattern variations every (length/8) steps
- Unused Knobs: Inserted at regular intervals even when not primary
Style Modes
- Sequential (Red LED): Simple cycle through primary knobs, wrapping at pattern length
- Custom (Green LED): User-defined pattern editable via right-click menu. Default is a 32-step Steve Reich-inspired motif. Enter knob numbers 1-5 to define your own pattern.
- Jump (Blue LED): Alternates between distant knobs using pattern [0,2,4,1,3]. Creates wider melodic intervals.
Custom Pattern
- Access: Right-click menu → Custom Pattern section
- Format: Enter numbers 1-5 representing knobs (e.g., "12312345")
- Default: 32-step phasing pattern [1,2,3,1,2,3,4,5,4,5,1,2,3,1,2,3,4,5,4,5,2,4,3,5,1,3,2,4,1,5,3,2]
- Density Interaction: Pattern values are clamped to available knobs based on Density setting
Chaos Parameter
- Step Randomization: Randomizes up to 50% of steps based on chaos amount
- High Chaos (>50%): Randomly selects knobs outside the density range, creating unexpected variations
- Result: Higher chaos creates less predictable, more generative sequences
Voltage Knobs (K1-K5)
- Range: -10V to +10V each
- Defaults: K1=0V, K2=2V, K3=4V, K4=6V, K5=8V (ascending pattern)
- Use Case: Set to scale notes for melodic sequences, or arbitrary values for modulation
Trigger Generation
- TRIG Output: Generates 10ms pulse when CV value changes from previous step
- TRIG2 Output: Generates 10ms pulse when CV2 value changes
- No Trigger: If consecutive steps output the same voltage, no trigger fires
Delay System (Track 2)
- T2.DLY (Shift Register): 0-5 step delay. Stores last 8 CV values in circular buffer. LED brightness indicates delay amount.
- CVD (Time Delay): 0-1000ms continuous delay. Buffer size: 192,000 samples (~4.3s at 44.1kHz).
- CV Modulation: When CVD CV input is connected, knob acts as attenuator for CV (0-10V × knob = delay time).
- Combined Delay: CV2 = CVD_delay(shift_register[step - T2.DLY])
Outputs
- CV OUT: Main sequence output (current knob voltage)
- TRIG: Trigger on CV change (10ms pulse)
- CV2: Delayed sequence (shift register + CVD)
- TRIG2: Trigger on CV2 change (10ms pulse)
Technical Specifications
- Knob voltage range: ±10V
- Sequence length: 8-48 steps
- Shift register delay: 0-5 steps
- CVD delay: 0-1000ms
- CVD buffer: 192,000 samples
- Trigger pulse width: 10ms
- Processing: 32-bit floating point
- Module width: 4HP
CPU Optimization
- Pattern mapping regenerated only when DENSITY or CHAOS parameters change, not on every clock
Mixer & Signal Processing
U8
4 HPStereo channel strip with automatic mono-to-stereo conversion, sidechain ducking, and chain bus integration
Features
- Stereo VCA channel strip
- 20ms mono-to-stereo delay
- Sidechain ducking
- Chain input for mixer expansion
- 16-channel polyphonic support
Overview
Stereo VCA mixer channel with automatic mono-to-stereo conversion, sidechain ducking, and cascade bus integration. Features 16-channel polyphonic processing, making it suitable for both simple mono sources and complex polyphonic signals. Multiple U8 modules can be chained together to build larger mixing systems.
Signal Flow
Input L/R → [Mono-to-Stereo if needed] → [Level × CV] → [Sidechain Ducking] → [Mute] → [+ Chain Input] → Output L/R. All processing maintains polyphonic channel separation.
Mono-to-Stereo Conversion
- Detection: Automatic when only LEFT input is connected (RIGHT disconnected)
- Delay Amount: Fixed 20ms delay on right channel
- Buffer Size: 2048 samples per polyphonic channel
- Sample Calculation: Delay samples based on 20ms at current sample rate
- Buffer Implementation: Circular buffer with read/write pointers
- Purpose: Creates stereo width from mono source via Haas effect
- When Stereo: Both inputs connected, delay is bypassed, signals pass through directly
Level Control
- Knob Range: 0.0 to 2.0 (0% to 200% gain)
- Default: 1.0 (unity gain)
- CV Modulation: CV multiplies knob value, clamped 0-1 from 0-10V input
- CV Range: 0-10V adds up to 100% to knob value
- Polyphonic: Same gain applied to all 16 channels
Sidechain Ducking
- Duck Input: Expects 0-10V envelope signal (typically from kick or bass)
- Duck Amount: 0.0 to 1.0 (controls attenuation depth)
- Ducking Behavior: Duck CV reduces gain proportionally, scaled by duck amount with 3x multiplier
- Maximum Attenuation: At duck=1.0 with 10V input, gain reduces to zero (full silence)
- At Duck 0: No attenuation regardless of input
- At Duck 1: Full 10V input causes complete silence
- Typical Use: Feed kick drum envelope to duck pads or bass for cleaner mix
Mute Function
- Button: Toggle mute on/off with LED indicator
- Trigger Input: Rising edge (2.0V threshold) toggles mute state
- LED Color: Red when muted, dark when unmuted
- When Muted: Channel output is zeroed, chain signal passes through unaffected
Chain Bus Integration
- CHAIN L/R Inputs: Receives signal from previous U8 module in chain
- Summation: Processed signal added to chain input
- Polyphonic: Chain signals maintain up to 16 polyphonic channels
- Cascading: Connect multiple U8 modules by linking OUT to next module's CHAIN
- Bypass Mode: When module is bypassed, chain input passes directly to output
Polyphonic Processing
- Channel Count: Supports up to 16 polyphonic channels
- Channel Detection: Automatically detects input polyphony
- Output Channels: Matches input channel count
- Per-Channel Delay: Each polyphonic channel has independent 2048-sample delay buffer
- Memory: Total delay buffer: 2048 × 16 × 2 (L/R) = 65,536 samples
Controls
- LEVEL Knob: Channel gain 0-200%
- LEVEL CV: Gain modulation input (0-10V)
- DUCK Knob: Sidechain ducking depth 0-100%
- DUCK CV: Sidechain control input (expects envelope 0-10V)
- MUTE Button: Toggle channel mute with LED
- MUTE TRIG: External mute toggle trigger
Inputs
- LEFT: Left audio input (polyphonic, up to 16 channels)
- RIGHT: Right audio input (polyphonic). If disconnected, mono-to-stereo mode activates.
- CHAIN L: Left chain bus input from previous U8
- CHAIN R: Right chain bus input from previous U8
Outputs
- OUT L: Processed left output + chain sum (polyphonic)
- OUT R: Processed right output + chain sum (polyphonic)
Technical Specifications
- Audio input/output: ±10V
- CV input: 0-10V (level, duck)
- Trigger threshold: 2.0V rising edge
- Polyphony: Up to 16 channels
- Mono-to-stereo delay: 20ms (882 samples at 44.1kHz)
- Delay buffer: 2048 samples per channel
- Level range: 0-200%
- Duck attenuation: 0-300%
- Processing: 32-bit floating point
- Module width: 4HP
YAMANOTE
8 HP8-channel stereo mixer with dual aux send buses, stereo returns, and chain I/O for modular expansion
Features
- 8-channel stereo input mixer
- Dual aux send buses (A/B)
- Per-channel send level controls
- Chain input/output expansion
- Polyphonic support (up to 16 channels)
Overview
8-channel stereo send/return mixer with dual aux send buses and integrated return processing. Designed as a companion to U8 for building complete modular mixing systems. Features full polyphonic support up to 16 channels and automatic mono-to-stereo conversion per input channel.
Signal Flow
Input Channels → Send Buses (A/B) → [External Effects] → Return Inputs → Mix Output. Mix output sums Return A + Return B + Chain Input. Dry signal from input channels does not pass to mix output; use U8 for direct mixing.
Polyphonic Processing
- Channel Detection: Automatically detects maximum polyphonic channel count across all inputs
- Output Channels: All outputs match the maximum detected polyphonic count
- Per-Channel Processing: Each polyphonic channel processed independently through send buses
- Maximum Polyphony: 16 channels (VCV Rack standard)
Per-Channel Controls (CH1-CH8)
- L Input: Left audio input (polyphonic). If polyphonic, each channel processed independently.
- R Input: Right audio input (polyphonic). If unconnected, Left input is copied to Right.
- Send A Knob: Send level to aux bus A (0.0-1.0, default: 0.0). Input signal scaled by knob position and added to bus A.
- Send B Knob: Send level to aux bus B (0.0-1.0, default: 0.0). Input signal scaled by knob position and added to bus B.
Send Bus Architecture
- Send A/B Calculation: Sum of all 8 channels weighted by their respective send levels
- Stereo Processing: Left and right processed independently through separate sum accumulators
- Typical Use: Connect send outputs to reverb/delay inputs, return outputs back to Return inputs
Send/Return Section
- SEND A L/R: Stereo aux send A outputs (polyphonic)
- SEND B L/R: Stereo aux send B outputs (polyphonic)
- RETURN A L/R: Stereo return A inputs from external effects (polyphonic)
- RETURN B L/R: Stereo return B inputs from external effects (polyphonic)
Master Section
- CHAIN L/R: Chain input from previous mixer module (polyphonic). Used for cascading multiple YAMANOTE or U8 modules.
- MIX L/R: Final stereo mix output (polyphonic). Sums Return A, Return B, and Chain inputs.
Bypass Behavior
- When Bypassed: Chain input passes directly to Mix output, maintaining signal flow
- Send Outputs: Not affected by bypass (become silent)
- Purpose: Allows temporarily removing effects from chain without breaking mixer cascade
Typical Patch Configuration
- Effects Send: SEND A → Reverb input → Reverb output → RETURN A
- Parallel Effects: SEND B → Delay input → Delay output → RETURN B
- Cascading: Connect MIX L/R to next mixer's CHAIN L/R
- With U8: U8 handles dry channel levels, YAMANOTE handles send/return effects
Technical Specifications
- Audio input/output: ±10V
- Send level range: 0.0 to 1.0
- Input channels: 8 stereo pairs (16 inputs total)
- Send buses: 2 stereo (Send A, Send B)
- Polyphony: Up to 16 channels per input
- Mix architecture: Post-return summing (Return A + Return B + Chain)
- Processing: 32-bit floating point
- Module width: 8HP
Ellen Ripley
8 HPSerial effects chain combining stereo delay, 16-grain granular processor, and Freeverb reverb with Lorenz attractor chaos modulation
Features
- Serial chain: Delay → Granular → Reverb
- Lorenz attractor chaos modulation
- 16-grain granular processor
- Independent L/R delay times
- Per-stage chaos enable buttons
Overview
Serial multi-effects processor combining stereo delay, 16-grain granular processor, and Freeverb-style reverb with Lorenz attractor chaos modulation. All three effect stages are connected in series, with independent wet/dry mix per stage. Features full polyphonic processing up to 16 channels with per-channel chaos generators and effect instances.
Signal Flow
Input → [Delay wet/dry] → [GRATCH wet/dry] → [Reverb wet/dry] → Output. Each stage processes the output of the previous stage, creating true serial effects chain. Reverb output is additionally fed back into delay input for extended tails.
Chaos Generator (Lorenz Attractor)
- Type: Lorenz strange attractor differential equations
- Behavior: Three coupled variables create unpredictable yet deterministic modulation
- Output: X component scaled and clamped to ±1 range
- Stability Check: Auto-resets if values exceed ±100 or become NaN
- Per-Channel: Each polyphonic channel has independent chaos generator
DELAY Section
- Buffer Size: 96,000 samples per channel (~2 seconds at 48kHz)
- TIME L/R: Independent delay times 1ms-2s (default: 250ms). CV adds ±200ms.
- FDBK: Feedback amount 0-95% (default: 30%). CV adds ±10%.
- C Button (Chaos): When enabled, modulates delay times based on chaos output
- Cross-Feedback: Each channel reads from its own buffer (no ping-pong)
GRATCH Section (Granular)
- Buffer Size: 8,192 samples (~170ms at 48kHz)
- Max Grains: 16 simultaneous grains
- SIZE: Grain duration 1-100ms. Smaller creates glitchy textures, larger creates smooth time-stretch.
- BREAK: Grain trigger rate (density). 0 = few grains, 1 = up to 51 grains/second.
- SHIFT: Buffer read position 0-100%. Determines where in buffer grains start.
- Envelope: Raised cosine (Hanning) window for smooth grain crossfades
- Chaos Effects: Position ±20 samples, 30% chance reverse playback, 20% chance octave shift (0.5× or 2×)
- Output Normalization: Amplitude scales with active grain count to prevent clipping
REVERB Section (Freeverb-Based)
- Architecture: 8 parallel comb filters + 4 series allpass diffusers
- Comb Filter Sizes (L): 1557, 1617, 1491, 1422 samples (~30-34ms at 48kHz)
- Comb Filter Sizes (R): 1277, 1356, 1188, 1116 samples (~23-28ms at 48kHz)
- Allpass Sizes: 556, 441, 341, 225 samples
- ROOM: Room size 0-100% affects early reflection tap positions. Scale: 0.3-1.7×
- TONE: Damping coefficient 0.05-0.95. Low = dark, high = bright.
- DECAY: Feedback 0.5-0.985. At max, near-infinite reverb tails (10+ seconds).
- Highpass Filter: 100Hz cutoff removes sub-bass buildup
- Chaos Effects: Feedback ±0.5, room offset ±50-70 samples
CHAOS Section
- RATE: Chaos speed. Shape OFF: 0.01-1.0Hz (smooth). Shape ON: 1.0-10.0Hz (stepped).
- SHAPE Button: OFF = smooth continuous chaos, ON = sample-and-hold stepped chaos
- AMOUNT: Global chaos intensity multiplier 0-100%
- CHAOS OUT: CV output ±5V for external modulation
- Per-Stage Enable: C buttons on each section enable/disable chaos for that stage
Wet/Dry Mixing
- DELAY: Wet/dry mix after delay stage
- GRATCH: Wet/dry mix after granular stage
- REVERB: Wet/dry mix after reverb stage
- Behavior: Linear crossfade between dry and wet signals
Polyphonic Processing
- Channel Count: Up to 16 polyphonic channels
- Per-Channel Instances: Delay buffers, grain processors, reverb processors, chaos generators
- Memory Usage: ~12MB total delay buffers (96k × 16 × 2 channels)
- CV Handling: CV inputs use channel 0 if polyphony doesn't match
Inputs
- L/R Audio: Stereo input (R normalizes to L if disconnected)
- TIME L/R CV: Delay time modulation
- FDBK CV: Delay feedback modulation
- SIZE/BREAK/SHIFT CV: Granular parameter modulation
- ROOM/TONE/DECAY CV: Reverb parameter modulation
Outputs
- L/R Audio: Stereo processed output (polyphonic)
- CHAOS OUT: Chaos CV output ±5V (polyphonic)
Technical Specifications
- Delay time: 1ms - 2 seconds
- Delay buffer: 96,000 samples per channel
- Grain buffer: 8,192 samples (~170ms)
- Max grains: 16 simultaneous
- Reverb decay: Up to 10+ seconds
- Reverb highpass: 100Hz cutoff
- Chaos algorithm: Lorenz attractor
- Polyphony: Up to 16 channels
- Processing: 32-bit floating point
- Module width: 8HP
Env VCA 6
12 HPSix stereo envelope-controlled VCAs with independent attack/release, three gate output modes, and sum bus routing (collab: offthesky)
Features
- Six stereo envelope-controlled VCAs
- Independent attack/release per channel
- Manual gate trigger buttons
- Sum bus routing to Channel 6
- Three gate output modes
Overview
Six-channel envelope-controlled VCA system developed in collaboration with offthesky. Each channel provides independent AD or AHR envelope with stereo VCA, manual gate triggers, and configurable gate outputs. Channels 1-5 can be routed to Channel 6's sum bus for submixing.
Signal Flow (per channel)
Gate → Envelope Generator → [× Audio In × Vol CV × Out Vol] → Audio Out. Gate Out derived from envelope state based on selected mode.
Envelope Behavior
- Time Range: Exponential scaling from ~1ms (knob at 0) to ~1000s (knob at 1.0). Center position: ~1s.
- Minimum Time: Clamped to 1ms to prevent clicks
- Curve Shape: S-curve for natural-sounding transitions
- Attack Phase: Ramps from 0 to 1 over attack time with curve applied
- Decay/Release Phase: Ramps from 1 to 0 over decay time with inverted curve
Envelope Modes
- AD Mode (HOLD off): Attack → Decay. Envelope starts on rising edge, completes full cycle regardless of gate length.
- AHR Mode (HOLD on): Attack → Hold → Release. Attack phase on rising edge, holds at peak while gate is high, release begins on gate falling edge.
- Trigger Detection: Schmitt trigger with 0.1V low / 2.0V high thresholds
Per-Channel Controls
- Attack: Attack time (0.0-1.0, exponential scaling ~1ms to ~1000s)
- Release: Release/Decay time (0.0-1.0, same scaling)
- Out Vol: Output volume multiplier (0.0-1.0, default: 0.8)
- Manual Button (pink): Momentary gate - generates 10V while pressed
- HOLD Button (pink): Toggles between AD and AHR envelope modes
- Sum Button (pink): Routes this channel's output to Channel 6 sum bus (CH1-5 only)
Per-Channel I/O
- In L: Left/mono audio input. If R is unconnected, L is copied to both channels.
- In R: Right audio input (optional)
- Gate: Trigger/gate input. Combined with manual button (max of both).
- Vol Ctrl: Volume CV (0-10V maps to 0-1 multiplier). Defaults to 1.0 if unconnected.
- Gate Out: Configurable gate/trigger output (see Gate Output Modes)
- Env Out: Raw envelope output (0-10V)
- Out L/R: Stereo VCA output = input × envelope × volCV × outVol
Gate Output Modes (via right-click menu)
- Full Cycle Gate: Output stays high (10V) from gate rising edge until envelope returns to zero. Useful for chaining sequences.
- End of Cycle Trigger: 1ms pulse when envelope completes (falls below 0.001). Useful for triggering next stage.
- Start + End Triggers: 1ms pulses at both gate rising edge AND envelope completion. Useful for clock multiplication.
Sum Bus System
- Routing: CH1-5 can route to CH6 via Sum buttons (CH6 has no sum button)
- Audio Summing: Each channel is attenuated before summing to prevent overload
- Envelope Summing: RMS-based calculation provides averaged envelope response
- Combination: Sum is ADDED to CH6's own output, not replacing it
- Use Case: Submix multiple channels through CH6 for unified processing
VCA Light
- Green LED: Shows current VCA gain level (envelope × volCV × outVol)
- Brightness: Proportional to final gain multiplier
Technical Specifications
- Audio I/O: ±10V (not limited to ±5V)
- Envelope output: 0-10V unipolar
- Volume CV: 0-10V (clamped)
- Gate trigger threshold: Schmitt 0.1V/2.0V
- Gate output pulse width: 1ms (trigger modes)
- Envelope curve: Fixed k=-0.9
- Sum scaling: 0.3x per channel
- Processing: 32-bit floating point
- Module width: 12HP
Collaboration
- Developed in collaboration with offthesky
3D Spatial Audio
KEN
4 HP8-channel binaural processor using HRTF with independent azimuth/elevation per channel and ILD/ITD modeling
Features
- 8-channel binaural panner
- Independent angle/elevation per channel
- HRTF-based 3D processing
- CV control for all parameters
- Part of Pyramid Series
Overview
8-to-2 binaural processor using synthesized HRTF (Head-Related Transfer Function) to convert 8-channel spatial audio into stereo headphone output. Part of the Pyramid Series - designed to receive spatial audio from Pyramid or DECAPyramid 8-speaker outputs. Implements ITD (Interaural Time Difference), ILD (Interaural Level Difference), distance-based filtering, elevation spectral shaping, and reverb simulation.
Signal Flow
Per-channel: Input → [ITD Delay] → [Distance Filter] → [Elevation Filter] → [Reverb Mix] → [HRTF Gain] → Sum to L/R.
ITD (Interaural Time Difference)
- Head Width: 0.18m (18cm anthropometric model)
- Sound Speed: 343 m/s (at sea level, 20°C)
- ITD Calculation: Delay based on head width divided by sound speed, scaled by azimuth sine
- Sample Delay: ITD converted to samples at current sample rate
- Delay Buffer: 128 samples per ear per channel (circular buffer)
- Application: Positive azimuth delays left ear, negative azimuth delays right ear
ILD (Interaural Level Difference)
- Azimuth Effect: Sources on opposite side attenuated up to 80%
- Same-Side Boost: Sources on same side boosted up to 30%
- Head Shadow: Rear sources (|azimuth| > 90°) attenuated by 40%
- Elevation Effect: Above horizon boosted up to 80%, below horizon attenuated up to 70%
- Distance Attenuation: Inverse-square law with offset for smooth falloff
- Final Gain: Clamped to range 0.1 to 1.5
Distance Filtering
- Type: Lowpass biquad filter per channel per ear
- Cutoff Behavior: Higher frequencies attenuated with increasing distance
- Range: 1kHz to 20kHz (clamped)
- Q Factor: 0.8
- Purpose: Simulates high-frequency attenuation over distance (air absorption)
Elevation Filtering
- Above Horizon (elevation > 0): Peak filter at 8kHz + elevation×40Hz, gain 2.0, Q=1.5. Boosts high frequencies for "above" perception.
- Below Horizon (elevation < 0): Lowpass filter at 7kHz - |elevation|×30Hz, gain 0.3, Q=2.0. Attenuates highs for "below" perception.
- Purpose: Simulates pinna filtering based on vertical angle
Reverb Simulation
- Type: Highpass filter at 3kHz, Q=0.7
- Gain: Increases with distance (base 0.1 plus distance scaling)
- Mix: Proportional to distance (distant sources have more reverb)
- Purpose: Distant sources have more high-frequency reverb content
Speaker Configuration
- Input 1: FL Upper (azimuth -45°, elevation +30°, distance 0.5)
- Input 2: FR Upper (azimuth +45°, elevation +30°, distance 0.5)
- Input 3: BL Upper (azimuth -135°, elevation +30°, distance 2.0)
- Input 4: BR Upper (azimuth +135°, elevation +30°, distance 2.0)
- Input 5: FL Lower (azimuth -45°, elevation -30°, distance 0.5)
- Input 6: FR Lower (azimuth +45°, elevation -30°, distance 0.5)
- Input 7: BL Lower (azimuth -135°, elevation -30°, distance 2.0)
- Input 8: BR Lower (azimuth +135°, elevation -30°, distance 2.0)
Controls
- LEVEL: Master output level (0.0 to 1.0, default: 0.7). Applied after all HRTF processing.
Gain Smoothing
- Coefficient: 0.001 per sample
- Behavior: Exponential smoothing with 0.001 coefficient per sample
- Purpose: Prevents clicks when input connections change
I/O
- Inputs 1-8: 8-channel spatial audio from Pyramid or DECAPyramid
- L Output: Left ear binaural output
- R Output: Right ear binaural output
Technical Specifications
- Input/Output voltage: ±10V
- Head model: 18cm width (anthropometric average)
- ITD delay buffer: 128 samples per ear per channel
- Filters per channel: 3 biquads (distance, elevation, reverb)
- Gain smoothing: 0.001 coefficient
- Processing: 32-bit floating point
- Module width: 4HP
Related Modules
- Pyramid: Single-source 3D panner with 8 outputs
- DECAPyramid: 8-channel 3D mixer with 8 outputs
Pyramid
8 HP3D spatial panner with X/Y/Z position control, 8 speaker outputs, and full CV modulation for all axes
Features
- 3D panner with XYZ control
- 8 speaker configuration outputs
- CV control for all axes
- Bipolar filter with biquad cascade
- Part of Pyramid Series
Overview
Single-source 3D spatial panner using Vector Base Amplitude Panning (VBAP) to position audio in a virtual 8-speaker cube. Part of the Pyramid Series alongside DECAPyramid (8-channel mixer) and KEN (binaural processor). Features full CV control for all axes, bipolar filtering with cascaded biquads, and send/return for external effects.
VBAP Spatial Behavior
Identical algorithm to DECAPyramid, positioning audio within a virtual cube of 8 speakers.
- Speaker Positions: 8 corners at coordinates (±1.0, ±1.0, ±1.0)
- Distance Calculation: Speaker gain is based on distance from source to each speaker position in 3D space
- Gain Response: Closer speakers receive more signal; gain decreases non-linearly with distance for natural spatial perception
- Edge Fade-Out: When source position exceeds ±0.8 on any axis, opposite speakers are smoothly faded to prevent artifacts
- Normalization: Total output power is kept constant regardless of source position
Signal Flow
Input → [Level] → [Filter] → [VBAP to 8 speakers] → Outputs. Return signals are mixed into outputs weighted by VBAP gains (L to even outputs, R to odd outputs).
Position Controls
- X: Left-right positioning (-1.0 to +1.0, center: 0). CV adds ±10V × 0.2 = ±2.0 range, clamped to ±1.0.
- Y: Front-back positioning (-1.0 to +1.0, center: 0). Front speakers at Y=-1, back at Y=+1.
- Z: Up-down positioning (-1.0 to +1.0, center: 0). Lower speakers at Z=-1, upper at Z=+1.
Filter Implementation
- Topology: 2-stage cascaded biquad (24dB/octave slope)
- Q Factor: Fixed at 0.707 (Butterworth response)
- Smoothing: Filter parameter smoothed with coefficient 0.002 to prevent zipper noise
- Negative Values (Lowpass): Frequency from 20Hz (filter=-1.0) to 22kHz (filter=0)
- Positive Values (Highpass): Frequency from 10Hz (filter=0) to 8kHz (filter=+1.0)
- Deadband: Filter bypassed when |filter| < 0.001
Level and Send Controls
- Level: Channel volume (0.0 to 1.0, default: 0.7). Applied before filtering.
- Send: Effect send level (0.0 to 1.0, default: 0). Output is post-level unless Send Pre-Level is enabled.
3D Visualization Display
- Projection: 30° isometric view of the speaker cube
- Speaker Indicators: Numbered circles (1-8) at cube corners scaled to 60% of actual positions
- Source Indicator: Yellow filled circle at current XYZ position
- Cube Edges: 12 edge lines connecting all speaker positions
I/O
- AUDIO IN: Mono audio input (±10V)
- X/Y/Z CV: Position modulation (±10V × 0.2 = ±2.0 offset, clamped)
- FILTER CV: Filter modulation (±10V × 0.2 = ±2.0 offset, clamped to ±1.0)
- SEND: Effect send output
- RETURN L/R: Stereo return inputs, mixed into outputs weighted by VBAP gains
- Outputs 1-4: Upper layer (FL, FR, BL, BR)
- Outputs 5-8: Lower layer (FL, FR, BL, BR)
Technical Specifications
- Input/Output voltage: ±10V
- Spatial algorithm: VBAP with edge fade-out
- Filter: 2-stage cascaded biquad, 24dB/octave, Q=0.707
- Filter smoothing: 0.002 coefficient per sample
- Processing: 32-bit floating point
- Module width: 8HP
Related Modules
- DECAPyramid: 8-channel 3D mixer (same VBAP algorithm, multiple sources)
- KEN: 8-to-2 binaural processor (converts 8-channel output to headphones)
Right-Click Menu
- Panel Theme: Light / Dark panel appearance
- Send Pre-Level: When enabled, send output taps signal before level fader. Default: OFF (post-fader).
DECAPyramid
40 HP8-channel 3D mixing console with per-channel spatial positioning, dual send/return buses for complete spatial solution
Features
- 8-track 3D spatial mixer
- XYZ positioning per channel
- Dual aux send/return buses
- Insert points for external processing
- 3D visualization display
Overview
8-channel 3D spatial mixer using Vector Base Amplitude Panning (VBAP) for positioning audio sources in a virtual 3D cube. Part of the Pyramid Series alongside Pyramid and KEN modules. Features 8 virtual speakers at cube corners, per-channel filtering with cascaded biquads, dual aux sends with insert points, and two sub-groups for flexible routing.
VBAP Spatial Behavior
The module implements Vector Base Amplitude Panning with 8 virtual speakers positioned at the corners of a cube. Each source position is converted to speaker gains based on distance calculations.
- Speaker Positions (X,Y,Z): 8 corners at coordinates (±1.0, ±1.0, ±1.0)
- Speaker Layout: Upper layer (FLU, FRU, BLU, BRU), Lower layer (FLD, FRD, BLD, BRD)
- Distance Calculation: Speaker gain is based on 3D distance from source to each speaker position
- Gain Response: Closer speakers receive more signal; gain decreases non-linearly with distance for natural spatial perception
- Normalization: All 8 speaker gains are summed and divided to maintain unity gain
- Smoothing: Position changes are smoothed with coefficient 0.005 per sample to prevent zipper noise
Per-Track Controls
- X: Left-right positioning (-1.0 to +1.0, center: 0). CV modulation adds ±1.0 range scaled by ±10V input.
- Y: Front-back positioning (-1.0 to +1.0, center: 0). Front speakers are at -Y, back at +Y.
- Z: Up-down positioning (-1.0 to +1.0, center: 0). Lower speakers at -Z, upper at +Z.
- Level: Channel volume (0.0 to 1.0, default: 0.7). Applied after filtering, before spatial processing.
- Filter: Bipolar biquad filter control (-1.0 to +1.0). Negative = lowpass (20Hz at -1.0, 22kHz at 0), Positive = highpass (10Hz at 0, 8kHz at +1.0).
- Send A/B: Post-fader aux send levels (0.0 to 1.0). Can be switched to pre-fader via right-click menu.
- Insert Send/Return: Per-track insert point for external processing. When return is unconnected, signal passes through directly.
Filter Implementation
- Topology: 2-stage cascaded biquad (second-order sections) for 24dB/octave slope
- Q Factor: Fixed at 0.707 (Butterworth response)
- Lowpass Range: Frequency mapped from 20Hz (filter = -1.0) to 22050Hz (filter = 0)
- Highpass Range: Frequency mapped from 10Hz (filter = 0) to 8000Hz (filter = +1.0)
- Coefficient Update: Recalculated when filter parameter changes by more than 0.001
Signal Flow
Input → [Filter] → [Insert Send/Return] → [Level] → [VBAP Panning to 8 speakers] → [Group Sum] → [Master] → Outputs. Send A/B tap from either pre-level or post-level based on menu setting.
Global Controls
- Return A/B: Stereo effect returns with independent level and filter controls. Returns are mixed directly to master bus.
- Group 1-4: Sub-group level for channels 1-4 (0.0 to 1.0, default: 1.0)
- Group 5-8: Sub-group level for channels 5-8 (0.0 to 1.0, default: 1.0)
- Master: Master output level affecting all 8 speaker outputs (0.0 to 1.0, default: 0.7)
3D Visualization Display
- View: Isometric projection of the 3D cube showing all 8 speaker positions
- Source Indicators: Each channel shown as colored dot at its current XYZ position
- Color Coding: Channel numbers 1-8 with distinct colors for identification
- Real-time Update: Position updates every frame following smoothed parameter values
I/O
- IN 1-8: Individual mono track inputs (±10V audio)
- X/Y/Z CV 1-8: Per-track position CV modulation inputs (±10V mapped to ±1.0 offset)
- FLT CV 1-8: Per-track filter CV modulation (±10V adds to filter parameter)
- INSERT SEND 1-8: Post-filter tap for external processing
- INSERT RETURN 1-8: Return from external processing (normalled to send when unpatched)
- SEND A/B: Mono aux send outputs to external effects
- RETURN A L/R: Stereo return A inputs
- RETURN B L/R: Stereo return B inputs
- OUT FLU/FRU/BLU/BRU: Upper layer speaker outputs (Front-Left/Right-Up, Back-Left/Right-Up)
- OUT FLD/FRD/BLD/BRD: Lower layer speaker outputs (Front-Left/Right-Down, Back-Left/Right-Down)
Technical Specifications
- Input/Output voltage: ±10V
- Spatial algorithm: VBAP with 8 speakers in cube configuration
- Filter: 2-stage cascaded biquad, 24dB/octave, Butterworth Q
- Position smoothing: 0.005 coefficient per sample
- Processing: 32-bit floating point
- Module width: 40HP
Related Modules
- Pyramid: 3D spatial panner for single source (companion module)
- KEN: Stereo analyzer and metering (Pyramid Series)
Right-Click Menu
- Send Pre-Level (per track): When enabled, aux sends tap signal before level fader for consistent send level regardless of channel volume. Default: OFF (post-fader).
Utility
Quanti2er
4 HP24-note (2-octave) chromatic quantizer with per-note microtune control, 28 world tuning presets, and 3 directional presets for ascending/descending scale differences
Features
- 24-note (2-octave) chromatic quantizer
- Per-note microtune sliders (±50 cents)
- 28 world tuning presets with 2-Oct markers
- 3 directional presets (↑↓) for Raga/Makam/Miyako-bushi
- Automatic pitch direction detection
- Amount & Offset with CV inputs
Overview
24-note (2-octave) chromatic quantizer with per-note microtune control, 28 world tuning presets, and 3 directional presets. Features automatic pitch direction detection for ascending/descending scale differences used in Raga, Makam, and Miyako-bushi scales.
Signal Flow
CV Input → [+ Offset + Offset CV] → [× Amount] → [Direction Detection] → [Quantize to enabled notes] → [+ Microtune] → CV Output. Three independent polyphonic channels with direction-aware quantization.
Two-Octave System
- 24 Notes: Two complete octaves for independent upper/lower octave tuning
- 24 Microtune Sliders: Per-note tuning (±50 cents) for both octaves
- 2-Oct Presets: Marked with (2-Oct) - Arabic Maqam, Turkish Makam, Persian Dastgah, Indian Raga, Japanese scales
- Single-Octave Presets: Automatically mirror to both octaves
Direction Detection
- Algorithm: Compares current note with previous note
- Threshold: ±0.5 semitones to avoid quantization jitter
- Directional Presets (↑↓): Turkish Rast, Arabic Hijaz, Miyako-bushi
- Usage: Ascending melodies use upper octave tuning, descending use lower octave
Controls
- AMOUNT: Pitch multiplier (0-2, default: 1). Values <1 compress, >1 expand
- OFFSET: Pre-quantization pitch offset (±1 semitone)
- CV Inputs: Amount CV and Offset CV modulation
- 24 Note Buttons: Toggle notes on/off across 2 octaves
- 24 Microtune Sliders: Per-note tuning (±50 cents)
World Tuning Presets (28 total)
- Western (4): Equal Temperament, Just Intonation, Pythagorean, Quarter-tone
- Arabic Maqam (6): Rast, Bayati, Hijaz, Saba, Nahawand, Kurd - all 2-Oct
- Turkish Makam (4): Rast, Ussak, Hicaz, Segah - all 2-Oct
- Persian (2): Dastgah Shur, Dastgah Segah - all 2-Oct
- Indian (4): Shruti, Raga Bhairav, Yaman, Bhairavi - all 2-Oct
- Japanese (4): Gagaku, In Scale, Yo Scale, Ryukyu - all 2-Oct
- Southeast Asian (3): Slendro, Pelog, Thai 7-TET
- Chinese (1): Pentatonic
Directional Presets (3)
- Turkish Rast (↑↓): F# ascending, F natural descending
- Arabic Hijaz (↑↓): Different intervals for melodic direction
- Miyako-bushi (↑↓): 6th degree changes with direction (D↑, C↓)
Scale Presets (16 total)
- Chromatic: All 24 notes enabled
- Major/Minor: Ionian, Aeolian modes
- Pentatonic: Major, Minor (5 notes)
- Modes: Dorian, Phrygian, Lydian, Mixolydian, Locrian
- Triads: Major (C-E-G), Minor (C-Eb-G)
- World: Blues, Arabic, Japanese, Whole Tone
I/O
- CV 1/2/3: Three independent pitch CV inputs (polyphonic, 16 ch)
- OUT 1/2/3: Corresponding quantized outputs
- Amount CV: Modulates pitch multiplier
- Offset CV: Modulates pre-quantization offset
Technical Specifications
- CV input/output: 1V/octave standard
- Polyphony: Up to 16 channels per input
- Note range: 24 notes (2 octaves)
- Microtune range: ±50 cents per note
- Tuning presets: 28 world + 3 directional
- Direction threshold: ±0.5 semitones
- Processing: 32-bit floating point
- Module width: 4HP
Runshow
12 HPPerformance timer with real-time clock, bar/beat counter, dual interval timers, and four variable-length bar sequencers
Features
- Real-time show timer display
- Bar:Beat:Tick counter
- Dual interval timers
- Four variable-length sequencers
- 5 morphable waveform shapes
Overview
Show timing and performance sequencer developed in collaboration with jan0ritter. Combines real-time clock counting, multiple timer systems, and variable-length bar sequencing with morphable waveform generation. Uses C++ chrono library for high-precision elapsed time tracking. Designed for live performance timing with visual progress tracking and precise trigger generation.
Transport Controls
- Start/Stop: Toggle via button or CV. Starts/stops elapsed time counting.
- Reset: Resets all counters (clockCount, currentBar, quarter_notes, eighth_notes, sixteenth_notes)
- Clock Input: External clock assumed to be 16th notes. 4 clocks = 1 beat, 16 clocks = 1 bar default.
Waveform Generation
- 5 Base Waveforms: Attack (ramp up, instant drop), Triangle (symmetric), Decay (instant rise, ramp down), Sine (half-wave), Square (sustain at 10V)
- Attack: Linear ramp from 0V to 10V over 99% of phase, then drops to 0V
- Triangle: Rises from 0V to 10V in first half, falls back to 0V in second half
- Decay: Starts at 10V, then linear ramp down to 0V over 99% of phase
- Sine: Half-wave sine shape, 0-10V unipolar
- Square: Sustains at 10V for entire duration
- Morphing: Linear interpolation between adjacent waveforms. Morph 0-1: Attack↔Triangle, 1-2: Triangle↔Decay, 2-3: Decay↔Sine, 3-4: Sine↔Square
Timer Controls
- Pulse Width: 1-99%, determines waveform duration as percentage of interval
- Waveform: 0-4 snapped value selecting/morphing between shapes
- Bar 1-4: Each bar length 1-16 clocks (integer snap). Total cycle = sum of all 4 bar lengths.
Interval Timers
- 5Min Timer: Triggers every 5 minutes until 30 minutes elapsed (5 triggers total)
- 1Min Timer: Triggers every 1 minute until 15 minutes elapsed (15 triggers total)
- Duration: Waveform length equals pulse width percentage of interval
- Phase: Advances proportionally each sample, resets when complete
Bar Cycle Logic
- Cycle Position: Current position wraps within total cycle length
- Bar Detection: Compares clocksInCycle against cumulative bar lengths
- Transition Trigger: Waveform triggered when currentBarInCycle changes
- Clock Interval Tracking: Measures time between clocks for adaptive pulse width
Visual Display
- Time Code: M:SS:CC format. Minutes limited to 0-999 (3 digits).
- Bar:Beat:Tick: BBB:B:T format. Beat = (clockCount/4) % 4 + 1, Tick = clockCount % 4 + 1
- Beat LED: Full brightness on beat, then fades smoothly
- 6 Progress Bars: 5m (6 segments), 1m (15 segments), Bar 1-4 (4 segments each)
Technical Specifications
- Module width: 12HP
- Clock detection: SchmittTrigger
- Time precision: chrono::steady_clock
- Output range: 0-10V unipolar
- Bar length: 1-16 clocks (integer snap)
- Waveform morph: Continuous 0.0-4.0
- State persistence: running, clockCount, currentBar, elapsedSeconds saved to JSON
Observer
8 HP8-channel oscilloscope with color-coded waveforms matching cable colors and adjustable time base
Features
- 8 simultaneous input channels
- Color-coded waveform display
- Adjustable time base control
- 8HP compact design
- Real-time signal monitoring
Overview
8-track waveform oscilloscope based on VCV Scope architecture, optimized for visual signal monitoring with color-matched waveforms. Each track automatically adopts the color of its connected cable, making it easy to identify and compare multiple signals simultaneously. Features adjustable time base with logarithmic scaling and optional trigger synchronization.
Display Architecture
- Buffer Size: 256 samples per track (BUFFER_SIZE constant)
- Waveform Rendering: Anti-aliased line drawing with 2.0px stroke width
- Y-axis Scaling: ±10V mapped to display height with 1.0/10.0 multiplier
- Color Source: Reads cable color from input port connection via PortWidget API
- Frame Rate: Waveform updates at display refresh rate (typically 60Hz)
Time Base Control
- Range: 5ms to 50ms per screen width
- Scaling: Base-2 logarithmic curve from 5ms to 50ms
- Samples per Buffer: Derived from time base and sample rate
- Interaction: Click and drag vertically on display to adjust time base
Trigger System
- Trigger Source: First connected input (lowest numbered track with cable)
- Trigger Mode Toggle: Click LED to switch between free-running and triggered
- Free-Running (White LED): Continuous waveform display without synchronization
- Triggered (Pink LED): Waits for rising edge crossing 0V threshold
- Threshold: Fixed at 0V (center crossing)
- Holdoff: Buffer refills completely after each trigger before waiting for next
Signal Processing
- Input Handling: Reads first channel of polyphonic inputs (channel 0)
- Sample Decimation: At longer time bases, samples are decimated to fit buffer
- Buffer Write: Circular buffer with frame index tracking
- Display Mapping: Buffer index 0-255 mapped to display X coordinates
Inputs
- Track 1-4: Top row inputs (4x2 grid layout). Track 1-4 from left to right.
- Track 5-8: Bottom row inputs. Track 5-8 from left to right.
- Input Priority: First connected input (lowest track number) becomes trigger source when trigger mode is enabled.
- Polyphonic Handling: Only channel 0 is displayed for polyphonic inputs.
Visual Features
- Cable Color Matching: Waveform color automatically matches the connected cable color using VCV's cable color API
- Grid Lines: Horizontal center line at 0V, vertical divisions at regular intervals
- Trigger LED: Top-center indicator showing trigger mode (white = free, pink = triggered)
- Dark Background: High contrast display optimized for waveform visibility
Technical Specifications
- Input voltage range: ±10V (soft clipped at display bounds)
- Input channels: 8 mono inputs (polyphonic inputs show channel 0 only)
- Buffer size: 256 samples per track
- Time scale: 5ms to 50ms per screen (logarithmic control)
- Trigger threshold: 0V (rising edge)
- Display update: Synchronized to GUI frame rate
- Processing: 32-bit floating point
- Module width: 8HP
Implementation Notes
- Based on: VCV Scope module architecture
- Key Difference: Multiple simultaneous tracks with automatic cable color matching
- Performance: Optimized for minimal CPU usage with frame-rate-limited display updates
Obserfour
8 HPCompact 4-track oscilloscope with 8 inputs grouped into overlapping display pairs for signal comparison
Features
- 4 overlapping display pairs
- 8 inputs total
- Signal comparison visualization
- 8HP compact design
- Color-coded waveforms
Overview
Compact 4-track waveform oscilloscope with 8 inputs designed for signal comparison. Two inputs are overlaid on each display track, with waveforms automatically adopting connected cable colors for intuitive visual comparison. Ideal for comparing original vs processed signals or envelope vs audio relationships.
Display Architecture
- Display Size: 120 × 300 pixels, divided into 4 horizontal tracks
- Track Height: 75 pixels per track (300 ÷ 4)
- Buffer Size: 256 samples per track (SCOPE_BUFFER_SIZE constant)
- Sample Storage: Min/max structure captures signal extremes for accurate representation at any zoom level
- Rendering: Anti-aliased lines at 1.5px stroke width, round line caps
Track Layout (Overlapped Pairs)
- Track 1 (Top): Input 1 + Input 5 overlaid
- Track 2: Input 2 + Input 6 overlaid
- Track 3: Input 3 + Input 7 overlaid
- Track 4 (Bottom): Input 4 + Input 8 overlaid
- Use Case: Compare dry/wet pairs, envelope/audio pairs, or L/R stereo pairs
Time Base Control
- Range: 5ms to 50ms per screen width
- Scaling: Base-2 logarithmic curve from 50ms to 5ms
- Frame Calculation: Samples per buffer entry derived from time delta and sample rate
- Interaction: Click and drag vertically on display area to adjust time scale
- Hidden Knob: Uses HiddenTimeKnobObserver widget covering display area
Trigger System
- Trigger Source: First connected input (lowest numbered with cable attached)
- Toggle Button: Clickable LED switches between triggered and free-running modes
- Free-Running (White LED): Continuous waveform display, buffer fills then refreshes
- Triggered (Pink LED): Waits for rising edge through 0V threshold before capturing
- Schmitt Trigger: Uses rescale(voltage, 0, 0.001, 0, 1) for edge detection with hysteresis
- Holdoff: After trigger, fills complete buffer (256 samples) before waiting for next trigger
Signal Processing
- Min/Max Tracking: Each frame tracks both minimum and maximum voltage for accurate peak display
- Sample Decimation: At longer time bases, multiple samples are accumulated per buffer entry
- Y-axis Mapping: ±10V scaled to display height, 0V centered
- Grid Lines: Horizontal track dividers and center lines drawn at 0V per track
Cable Color Matching
- Implementation: Reads cable color from PortWidget via APP->scene->rack->getTopCable()
- Default Color: White if no cable connected or color unavailable
- Per-Input Colors: Each of the 8 inputs has independent color matching
- Visual Benefit: Easy identification of which waveform corresponds to which signal source
Inputs
- Track 1-4: Top row inputs (left to right)
- Track 5-8: Bottom row inputs (left to right), overlaid on tracks 1-4 respectively
- Polyphonic: Displays channel 0 only for polyphonic inputs
Technical Specifications
- Input voltage range: ±10V (soft clipped at display bounds)
- Input channels: 8 mono inputs (polyphonic inputs show channel 0 only)
- Display tracks: 4 (with 2 overlaid waveforms each)
- Buffer size: 256 samples per track
- Time scale: 5ms to 50ms per screen (logarithmic control)
- Trigger threshold: 0V (rising edge)
- Display update: Synchronized to GUI frame rate
- Processing: 32-bit floating point
- Module width: 8HP